jQuery.on() for children 没有特定的选择器
jQuery.on() for children with no particular selector
我有这样的 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>
我在 .child
元素上捕获事件(如 click
),如下所示:
$('.parent').on('click', '.child', function() { ... });
但是,我想摆脱明确的 class 规范,并基于直系血统本身这一事实。
我想编写的代码不需要 children 元素的任何特定 classes。最接近的是:
$('.parent').on('click', '*', function() { ... });
但显然这样的处理程序会传播到更深的后代(.something
、.something-else
等),而不仅仅是在第一层。
有没有办法实现我想要的东西,是使用某种东西而不是 *
或其他方式?
P.S。我不想使用直接绑定 - $('.parent').children().click(function() {...});
- 因为它速度较慢并且在动态添加 children 的情况下不起作用。
寻找的选择器是> *
:
$('.parent').on('click', '> *', function() { ... });
(Josh Crozier 在评论中提出了实际解决方案,我只是将其作为答案转贴。)
我有这样的 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>
我在 .child
元素上捕获事件(如 click
),如下所示:
$('.parent').on('click', '.child', function() { ... });
但是,我想摆脱明确的 class 规范,并基于直系血统本身这一事实。 我想编写的代码不需要 children 元素的任何特定 classes。最接近的是:
$('.parent').on('click', '*', function() { ... });
但显然这样的处理程序会传播到更深的后代(.something
、.something-else
等),而不仅仅是在第一层。
有没有办法实现我想要的东西,是使用某种东西而不是 *
或其他方式?
P.S。我不想使用直接绑定 - $('.parent').children().click(function() {...});
- 因为它速度较慢并且在动态添加 children 的情况下不起作用。
寻找的选择器是> *
:
$('.parent').on('click', '> *', function() { ... });
(Josh Crozier 在评论中提出了实际解决方案,我只是将其作为答案转贴。)