首页 > 解决方案 > jQuery.on() 用于没有特定选择器的孩子

问题描述

我有这样的 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),而不仅仅是在第一级。

有没有办法实现我正在寻找的东西,使用某些东西而不是*其他方式?

PS 我不想使用直接绑定 -$('.parent').children().click(function() {...});因为它速度较慢,并且在动态添加孩子的情况下不起作用。

标签: jquery-selectorsjquery-events

解决方案


寻找的选择器是> *

$('.parent').on('click', '> *', function() { ... });

(实际的解决方案是 Josh Crozier 在评论中提出的,我只是将其作为答案重新发布。)


推荐阅读