Javascript 防止父事件触发子事件

Javascript 防止父事件触发子事件,javascript,events,Javascript,Events,因此,有很多问题询问如何防止子事件触发父事件,但我似乎找不到任何相反的方法 我打开和关闭父事件,如下所示: var body_event = function(e){ console.log('test'); }; $('#btn').toggle( function(e){ $('body').bind('click', body_event); }, function(){ $('body').unbind('click',

因此,有很多问题询问如何防止子事件触发父事件,但我似乎找不到任何相反的方法

我打开和关闭父事件,如下所示:

var body_event = function(e){
    console.log('test');
};

$('#btn').toggle(
    function(e){
        $('body').bind('click', body_event);
    }, 
    function(){
        $('body').unbind('click', body_event);
    }
);
当前,如果我在如下页面上运行此操作:

<body>
    <div id="btn">click to activate</div>
    <div id="example" onclick="alert('do not show this when event is bound')">
        try the body event by clicking here
    </div>
</body>

event.stopPropagation()可以解决这个问题,在body\u event内部?

event.stopPropagation()可以解决这个问题,在body\u event内部?

这很接近,但不是很接近。它不检查是否绑定了特定函数,只检查是否有任何事件绑定到jQuery对象

必须有一种方法来查询事件,以确定一个人是否一定要单击,以及随后它指向什么函数。希望这能让你开始


这很接近,但并不完全如此。它不检查是否绑定了特定函数,只检查是否有任何事件绑定到jQuery对象

必须有一种方法来查询事件,以确定一个人是否一定要单击,以及随后它指向什么函数。希望这能让你开始


你必须改变你的想法。如果父级有事件,则不要为子级触发。StopPropagation仅在相反的情况下有用。是的,重要的是要记住,子事件是在父事件之前触发的。你必须颠倒你的想法。如果父级有事件,则不要为子级触发。StopPropagation仅对相反的场景有用。是的,请务必记住,子事件是在父事件之前触发的。
$('#example").attr('onclick', '');
var body_event = function(e) {
    alert('test');
};

$('#btn').toggle(

function(e) {
    $('body').addClass('active').bind('click', body_event);
}, function() {
    $('body').removeClass('active').unbind('click', body_event);
});

$('#example').click(function() {
    //debugger;
    if ($('body').data('events') == undefined) {
        alert('do not show this when event is bound');
    }
});​