假设我有一些看起来像这样的 HTML 标记:
<a href='#!' class='foo'><i class='bar'></i> Link</a>
然后,比如说,我将一个 jQuery 事件处理程序绑定到我的文档,如下所示:
$(document).on('click','.foo','click',function(e) {
var obj = e.target;
console.log(obj);
});
如果我单击锚(“链接”)中的文本,“obj”最终被设置为“a.foo”元素。但是,当我单击链接中的图标时,“obj”最终被设置为“i.bar”元素。
我添加了代码来找到合适的元素,如下所示:
$(document).on('click','.foo','click',function(e) {
var obj = e.target;
if (!$(obj).hasClass('foo')) {
obj = $(obj).parents('.foo').first();
}
console.log(obj);
});
我只是想知道是否没有更优雅的解决方案。例如,如果您可以调用“e.selectorTarget”或其他东西并且它会返回该项目,那就太好了。