问题描述
我有这样的HTML结构:
<div class="parent">
<div class="child">
<div class="something">...</div>
</div>
<div class="child">
<div class="something-else">...</div>
</div>
<div class="child">
...
</div>
...
</div>
我在click
元素上捕获了事件(例如.child
):
$('.parent').on('click','.child',function() { ... });
但是,我想摆脱显式的类规范,而要基于直接祖先本身的事实。 我想编写不需要为子元素添加任何特定类的代码。与此最接近的是:
$('.parent').on('click','*',function() { ... });
但是显然,这样的处理程序将不仅在第一级上传播到更深的后代(.something
,.something-else
等)上。
是否有某种方法可以实现我的期望,而不是使用*
或其他方法?
P.S。我不想使用直接绑定-$('.parent').children().click(function() {...});
-因为它比较慢,并且在动态添加子代的情况下不起作用。
解决方法
寻找的选择器是> *
:
$('.parent').on('click','> *',function() { ... });
(实际的解决方案由Josh Crozier在评论中提出,我只是将其重新发布为答案。)