jquery 选择器特异性和传播

标签 jquery

如果定义了一个更具体的事件,如何防止先前定义的事件发生?

这是经过编辑的 fiddle

    <div class="first">
    <div class="wrapper">
        <span class="click">click</span>
        <div class="second">
            <div class="wrapper"> 
                <span class="click">click</span>
            </div>
        </div>
    </div>
</div>

  $('.first .click').on('click', function(e) {
    e.stopPropagation();
    alert('first');
});

$('.second > .click').on('click', function(e) {
    e.stopPropagation();
    alert('second');
});

我希望嵌套在第一个 div 中的第二个 span.click 不触发附加到第一个 div 的事件。

编辑:(为反对票欢呼)

下面的几个答案非常适合使用直接父 > 子选择器的上面呈现的标记。但不幸的是,我简化了示例中的标记,这可能会产生误导。

在我的生产代码中,单击/按钮是在两个部分中使用的共享模板的一部分,因此本示例中的“父”选择器。第二个是按钮中 DOM 上的几个节点。

我会尝试添加一个更相关的 fiddle 。

最佳答案

使用子选择器以这种方式尝试>:

$('.first > .click').on('click', function(e) {
    e.stopPropagation();
    alert('first');
});

$('.second > .click').on('click', function(e) {
    e.stopPropagation();
    alert('second');
});

关于jquery 选择器特异性和传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17337943/

相关文章:

jquery - 为什么我的 jQuery 动画需要在 IE8 中额外单击才能完成?

jquery 仅在第一次触摸时防止默认

javascript - jquery setInterval 函数中的 SetValue 和 bootstrap 进度条宽度不匹配

jQuery UI Datepicker 与 jQuery Tipsy

javascript - 有没有办法绕过 Javascript/jQuery 的本地访问同源策略?

javascript - 一页上有2个相似的表单,$(this).find();正在从最后一个表单中获取值(value)

无法识别 Javascript 条件格式

javascript - 使用 key 0/1 而不是 key 名称访问 JSON

javascript - Jquery 模糊文本并在焦点上为空

Javascript jQuery 样式.backgroundSize