javascript – 防止在jquery中执行排队事件

我有一个为两个事件触发的处理程序:

>模糊对象A的触发器
>点击对象B.

问题是当对象A有焦点并且我点击B时,两个事件都被触发.我想阻止这种情况发生.在这种情况下,处理程序应该只执行一次,因为在其中有一个toggle()由于第二次调用而无效.有什么方法可以清除对象上的所有待处理事件吗?

<div id='panel'>Hey!</div>    

<input type='text' id='a'>
<div id='b'>Hello</div>
function handler() {
    $('#panel').toggle();
}

$('#a').blur(handler);
$('#b').click(handler);

当文本框具有焦点并且用户单击div“b”时,将触发两个事件 – 输入a的模糊和div b的单击.这两个事件都由同一个函数处理,并且由于该函数偶然切换了另一个元素(面板),因此功能失败,因为两个切换相互抵消.所以,我需要的是一种清除元素的所有待处理事件的方法.

最佳答案 您可能正在寻找
event.preventDefault()

If this method is called, the default action of the event will not be triggered.

或者,也许您需要.unbind()一个事件,然后在另一个事件被触发后重新绑定它.

.undelegate()可以做你想做的事情:

Remove a handler from the event for all elements which match the current selector,
now or in the future, based upon a specific set of root elements.

点赞