gla*_*666 9 javascript jquery events
我已按以下方式设置onclick事件处理程序:
element.onclick = function() { /*code */ }
Run Code Online (Sandbox Code Playgroud)
想象一下,使用jQuery方法bind()或类似的处理程序设置事件处理程序.
$('element').bind('click', function(){/*another function*/})
Run Code Online (Sandbox Code Playgroud)
如何从我刚才描述的处理程序中阻止使用jQuery定义的调用处理程序?
NB stopPropagation()等等.jQuery的方法不适用于该函数,因为它与本机事件对象一起传递.
我不是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()
}
Run Code Online (Sandbox Code Playgroud)
编辑:再次阅读您的问题,我不认为传播是问题 - 您似乎想要取消事件处理程序在事件处理程序中运行 - 我不确定这是否可行.你可以解除所有处理程序(jQuery(elem).unbind('click'))的绑定,但我不认为这就是你所追求的......
接下来是JimmyP的回答.我试过这个
$('#x').click( function(e){
alert('hello');
});
document.getElementById('x').onclick = function(){
$('#x').unbind('click');
alert("goodbye");
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,jQuery事件运行一次.我不认为你可以依赖于调用处理程序的顺序但是你定义它们,所以我猜你必须接受jQuery事件可能会触发一次.首先添加onclick会阻止jQuery事件发生,但正如我所说,我认为这不可靠.
归档时间: |
|
查看次数: |
39844 次 |
最近记录: |