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');
}
});