当前位置:  开发笔记 > 编程语言 > 正文

取消jQuery事件处理

如何解决《取消jQuery事件处理》经验,为你挑选了2个好方法。

我已按以下方式设置onclick事件处理程序:

element.onclick = function() { /*code */ }

想象一下,使用jQuery方法bind()或类似的处理程序设置事件处理程序.

$('element').bind('click', function(){/*another function*/})

如何从我刚才描述的处理程序中阻止使用jQuery定义的调用处理程序?

NB stopPropagation()等等.jQuery的方法不适用于该函数,因为它与本机事件对象一起传递.



1> James..:

我不是100%肯定你在问什么,但也许这会有所帮助:

您可以通过jQuery公开的Event构造函数创建一个新的事件对象(符合W3C DOM):

例如:

element.onclick = function(e) {
    var aBetterEventObject = jQuery.Event(e);
    // Now you can do what you want: (Cross-browser)
    aBetterEventObject.preventDefault()
    aBetterEventObject.isDefaultPrevented()
    aBetterEventObject.stopPropagation()
    aBetterEventObject.isPropagationStopped()
    aBetterEventObject.stopImmediatePropagation()
    aBetterEventObject.isImmediatePropagationStopped()
}

编辑:再次阅读您的问题,我不认为传播是问题 - 您似乎想要取消事件处理程序在事件处理程序中运行 - 我不确定这是否可行.你可以解除所有处理程序(jQuery(elem).unbind('click'))的绑定,但我不认为这就是你所追求的......



2> meouw..:

接下来是JimmyP的回答.我试过这个

$('#x').click( function(e){
    alert('hello');
});
document.getElementById('x').onclick = function(){
    $('#x').unbind('click');
    alert("goodbye");
}

在此示例中,jQuery事件运行一次.我不认为你可以依赖于调用处理程序的顺序但是你定义它们,所以我猜你必须接受jQuery事件可能会触发一次.首先添加onclick会阻止jQuery事件发生,但正如我所说,我认为这不可靠.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有