假设我有2个Javascript文件,includeFirst.js
和includeSecond.js
,这些文件正在加载到页面中。如果第一个包含一些代码,如:
$('#myButton').click(function() {
alert('Hello World');
}
第二个包含:
$('#myButton').click(function() {
alert('World Hello');
}
我正在弹出两个警报。有没有什么方法可以在第二个中添加一些东西给第一个.click,以便第一个不运行?
我意识到这种编码方法似乎很邋/ bad,但它只是修复了一些将很快完全重写的遗留代码。我想暂时解决这个问题。
答案 0 :(得分:3)
在第二个JS文件中,使用off()
删除任何现有处理程序,然后再附加新的click事件:
$('#myButton').off('click').click(function() {
alert('World Hello');
}
答案 1 :(得分:0)
您应取消绑定任何现有的事件处理程序,然后绑定一个新的事件处理程序。但请注意,当现有事件处理程序执行重要操作时,这可能会产生不良影响,而新事件不会复制此行为。
$("#myButton")
.unbind("click")
.click(function(){
alert("Hello world");
});
我已经链接了这些调用,因此它将首先取消绑定任何现有的点击事件处理程序(当有多个所有时),然后绑定一个新的一个...
如果您只想解除绑定相同类型的特定事件处理程序,可以使用event namespaces。它们的格式为click.namespaceName
jQuery
.bind()
文档:
如果 eventType 字符串包含句点(。)字符,则表示 event是命名空间。句点字符将事件与其分开 命名空间。例如,在通话.bind( "click.name", handler)
中, 字符串单击是事件类型,字符串 name 是 命名空间。命名空间允许我们取消绑定或触发某些事件 在不影响他人的情况下打字。
答案 2 :(得分:0)
您可以使用Unbind功能删除绑定到元素的所有点击事件。
var myButton = $("#myButton");
myButton.unbind('click');
myButton.click(function() {
alert('World Hello');
}
注意:此代码尚未经过测试。
答案 3 :(得分:-2)
尝试在第二次点击事件中使用event.preventDefault()