我在stackoverflow中看到很多答案都被错误地解答了,我想至少为自己说清楚。
旧问题:在带有typescript的事件处理程序中使用$(this)。大部分答案都是关于使用event.target
第一个问题是它不仅是event.target
(堆栈溢出的大部分答案)。我也需要检查IE特定的术语(任何记得jquery之前几天的人至少知道这一点。)
第二个问题是传播。 假设我有一些像这样的元素
<a href="#"><i class="fa fa-open"><span>something is here</span></i></a>
我在a
上创建了一个点击事件,如下所示:
$("a").click((evt)=>{
evt = evt || window.event;
var target = evt.target || evt.srcElement;
console.log($(target));
});
如果通过适当的点击在这些元素周围有足够的填充和边距,我可以将目标作为三个元素之一a
,i
,span
现在头痛将开始,然后我需要检查点击的内容,是a
还是span
甚至是i
如果我可以访问$(this),它会不时带来不需要的冗余代码。 $(this)的美妙之处在于它正在返回我正在收听的项目,跨浏览器!
在我的情况下,$(this)始终引用a
而不是任何其他子元素。所以我知道,例如,如果我想访问i
我需要搜索子元素。但是在Typescript让我使用事件的方式中我需要检查DOM中的位置(目标是span
或a
或i
!!!),然后我决定爬上树或在树上下来或做当前元素的变化。
我知道应该有更好的方法。所以问题是它是什么?
答案 0 :(得分:1)
我认为你想使用event.currentTarget
而不是目标:
https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget
ps:你真的支持IE8吗?谷歌,微软甚至不再支持它在大多数网站上。
答案 1 :(得分:1)
答案就在于实例方法,
从typescript 0.91开始,普通方法和实例方法及其MyClass0 *myClassInstance = [[MyClass0 alloc] init];
NSMutableDictionary *dict = myClassInstance.valuee;
之间存在差异。这种差异让我可以在类实例中访问它,也可以在jquery中访问它。
示例类将是这样的:
this