<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/