多个jQuery.clicks,仅使用最新的
假设我有两个Javascript文件,多个jQuery.clicks,仅使用最新的,jquery,Jquery,假设我有两个Javascript文件,includeFirst.js和includeSecond.js,正在加载到页面中。如果第一个包含以下代码: $('#myButton').click(function() { alert('Hello World'); } 第二部分包括: $('#myButton').click(function() { alert('World Hello'); } 我收到两个警报。是否有任何方法可以将某些内容添加到。在第二个中单击以使第一个不运行 我
includeFirst.js
和includeSecond.js
,正在加载到页面中。如果第一个包含以下代码:
$('#myButton').click(function() {
alert('Hello World');
}
第二部分包括:
$('#myButton').click(function() {
alert('World Hello');
}
我收到两个警报。是否有任何方法可以将某些内容添加到。在第二个中单击以使第一个不运行
我意识到这种编码方法看起来很草率/糟糕,但它只是为了修复一些即将完全重写的遗留代码。我只想暂时修复此问题。在第二个JS文件中,在附加新的单击事件之前,使用
off()
删除任何现有的处理程序:
$('#myButton').off('click').click(function() {
alert('World Hello');
}
尝试在第二次单击事件中使用event.preventDefault()解除现有事件处理程序的绑定 您应该解除任何现有事件处理程序的绑定,然后绑定一个新的事件处理程序。但请注意,当现有事件处理程序执行一些重要的操作,而新的事件处理程序没有复制这种行为时,这可能会产生不期望的效果
$("#myButton")
.unbind("click")
.click(function(){
alert("Hello world");
});
我已经链接了这些调用,因此它将首先解除所有现有的单击事件处理程序的绑定(当存在多个时,所有这些处理程序都将解除绑定),然后绑定一个新的处理程序
解除绑定相同类型的特定事件处理程序
如果只想解除绑定相同类型的特定事件处理程序,可以使用。它们的形式为click.namespaceName
jQuery.bind()
文档:如果eventType字符串包含句点(.)字符,则 事件具有名称空间。句点字符将事件与其对应的事件分隔开 命名空间。例如,在调用
.bind(“click.name”,handler)
中,
字符串click是事件类型,字符串名称是
命名空间。名称空间允许我们解除绑定或触发
在不影响他人的情况下打字
可以使用Unbind函数删除绑定到元素的所有单击事件
var myButton = $("#myButton");
myButton.unbind('click');
myButton.click(function() {
alert('World Hello');
}
注意:此代码尚未测试。您可以使用
.off()
-$(“#myButton”).off('click')。单击(函数(){alert('World Hello');}删除单击处理程序
存在事件对象的stopImmediatePropagation
方法。将其作为第一条语句添加到两个处理程序中。这只会阻止默认行为…例如,它将阻止定位标记导航到URL等。