当我使用以下内容注册点击事件的处理程序时:
$('.drilldown-action > li').live('click', function(event){
drilldown.loadActions($(event.target));
});
使用HTML:
<ul class="drilldown-action">
<li data-action="Dummy"><a href="#">Dummy</a> Dum</li>
</ul>
在浏览器中(使用Chrome)我单击a
标签,如何获取事件已注册的jQuery对象?我希望li
元素是事件目标,因为这是我放在选择器中的内容。我知道我可以在这种情况下使用.parent()
,但有没有办法让对象与选择器匹配,而不是底部事件目标?使用.parent()
也很痛苦,因为当点击li
的其他部分时,我不需要使用它。
答案 0 :(得分:7)
e.target
是链接标记。
您应该使用this
来获取绑定到处理程序的元素的li
标记。
<强>代码:强>
$('.drilldown-action > li').live('click', function(event){
drilldown.loadActions($(this));
});
注意:从jQuery 1.7开始,不推荐使用.live()
方法。使用.on()
附加事件处理程序。旧版jQuery的用户应优先使用.delegate()
{。{1}}。
答案 1 :(得分:2)
是的,使用this
就像使用任何其他活动一样。
drilldown.loadActions($(this));
答案 2 :(得分:1)
在这种情况下,我会确保我总是通过我想要的东西:
$('.drilldown-action > li').live('click', function(event){
drilldown.loadActions($(event.target).closest('li'));
});
根据jQuery api文档, nearest()将始终传递“li”元素:
描述:对于集合中的每个元素,获取第一个元素 通过测试元素本身并遍历来匹配选择器 通过它在DOM树中的祖先。 https://api.jquery.com/closest/