在带有typescript的事件处理程序中使用$(this)

时间:2016-07-02 11:02:51

标签: jquery typescript

我在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));
});

如果通过适当的点击在这些元素周围有足够的填充和边距,我可以将目标作为三个元素之一aispan

现在头痛将开始,然后我需要检查点击的内容,是a还是span甚至是i

如果我可以访问$(this),它会不时带来不需要的冗余代码。 $(this)的美妙之处在于它正在返回我正在收听的项目,跨浏览器!

在我的情况下,$(this)始终引用a而不是任何其他子元素。所以我知道,例如,如果我想访问i我需要搜索子元素。但是在Typescript让我使用事件的方式中我需要检查DOM中的位置(目标是spanai !!!),然后我决定爬上树或在树上下来或做当前元素的变化。

我知道应该有更好的方法。所以问题是它是什么?

2 个答案:

答案 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
相关问题