jquery - 如何停止事件传播?

标签 jquery events

<script type="text/javascript">
$(function(){
    $('<h2>Click</h2>').prependTo($('#container')).live('click',function() {
        return false;
    });
    $('#container').click(function() {
        alert(1);
    });
});
</script>


<div id="container">

</div>

我不希望click事件传播到#container,这就是为什么return false,但显然它是不工作

最佳答案

它与使用live选择器和事件委托(delegate)有关。您甚至不需要那个 live 处理程序。像这样更改您的 #container 点击:

$('<h2>Click</h2>').prependTo($('#container'));
$("#container").click(function(e){
    if(e.target.nodeName != "H2"){
       alert(1);
    }
});

或者如果使用所有 jQuery 看起来更好:

$("#container").click(function(e){
    if($(e.target).is('h2') == false){
       alert(1);
    }
});

这两个示例都测试原始点击发生的位置,如果点击 H2,则不会执行。

关于jquery - 如何停止事件传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2070340/

相关文章:

javascript - Brightcove 视频模板加载处理程序未触发

jquery - 隐藏所有 li 元素并显示前 2 个元素并通过按钮切换它们

jQuery UI 可排序 : Multi-item select

javascript - 新的 &lt;style&gt; 元素在 IE 中不起作用

javascript - Firefox 和 Internet Explorer 中的全窗口 onClick 处理程序

ajax - <f :ajax> doesn't work on PrimeFaces component

jquery - 将Grails从1.3.4升级到2.0.3后,将数据呈现为JSON无法正常工作

javascript - 更新 <a> 文本,没有任何延迟

JavaFx : Event Filter on Tab (Tab Pane)

Javascript 事件监听因使用匿名函数或命名函数而有所不同