双重呼叫';单击';jquery中的事件
我在调用输入对象中的“click”函数时遇到了一点问题。函数将事件分配给输入:双重呼叫';单击';jquery中的事件,jquery,Jquery,我在调用输入对象中的“click”函数时遇到了一点问题。函数将事件分配给输入: function v_start() { $('#next').click(function(){ v_check(); }); } 现在,在javascript文件name.js和name2.js中,我有: 复制代码 $(function(){ v_start(); }); 这只是一个示例,但在这种情况下,函数v_check将在一次单击
function v_start() {
$('#next').click(function(){
v_check();
});
}
现在,在javascript文件name.js和name2.js中,我有:
复制代码
$(function(){
v_start();
});
这只是一个示例,但在这种情况下,函数v_check将在一次单击输入中调用两次。是一种条件或方法只有一次?为什么第二个事件不会覆盖?每次在jQuery中处理事件时,它都会将处理程序添加到列表中。没有“覆盖” 在这种情况下,避免事件被分配两次的一个简单解决方案是附加一个数据标志,指示事件已经被附加,例如如下所示
function v_start() {
if (!$('#next').data('click-handled')) {
$('#next').data('click-handled', true).click(function(){
v_check();
});
}
}
(您也可以手动获取事件列表并检查函数是否存在,但这要复杂得多。)每次在jQuery中处理事件时,它都会将处理程序添加到列表中。没有“覆盖” 在这种情况下,避免事件被分配两次的一个简单解决方案是附加一个数据标志,指示事件已经被附加,例如如下所示
function v_start() {
if (!$('#next').data('click-handled')) {
$('#next').data('click-handled', true).click(function(){
v_check();
});
}
}
(您也可以手动获取事件列表并检查函数是否存在,但这要复杂得多。)取消绑定并绑定以确保只添加一次事件处理程序:
$("#mySelector").unbind("click").bind("click",myFunction)
如果存在多个事件侦听器:
var myFunction = function(e){ /// my code }
$("#mySelector").unbind("click",myFunction).bind("click",myFunction)
取消绑定并绑定以确保事件处理程序只添加一次:
$("#mySelector").unbind("click").bind("click",myFunction)
如果存在多个事件侦听器:
var myFunction = function(e){ /// my code }
$("#mySelector").unbind("click",myFunction).bind("click",myFunction)
由于在每个文件中调用了两次
v_start
,显然您绑定了两次事件。如果click
事件已按如下方式处理,则可以进行简单检查:
function v_start() {
var $next = $('#next');
$next.data('events').click || $next.click(v_check);
}
由于在每个文件中调用了两次
v_start
,显然您绑定了两次事件。如果click
事件已按如下方式处理,则可以进行简单检查:
function v_start() {
var $next = $('#next');
$next.data('events').click || $next.click(v_check);
}
使用:
这对我来说是最好的解决方案,或者也是
$(".mybutton").unbind("click",myFunction).bind("click",myFunction)
使用:
这对我来说是最好的解决方案,或者也是
$(".mybutton").unbind("click",myFunction).bind("click",myFunction)
您可能会附加事件处理程序两次。添加
警报(123)
然后查看代码段是否同时位于name.js
和name2.js
中,它将附加两次事件处理程序,从而触发两次行为。您可能会附加两次事件处理程序。添加警报(123)
在那里,查看代码段是否同时位于name.js
和name2.js
中,它将附加两次事件处理程序,从而触发两次行为。或者,如果使用jQuery 1.7+,请使用.off()
和.on()
而不是。取消绑定()
和.bind()
。或者,如果使用jQuery 1.7+,使用.off()
和.on()
而不是.unbind()
和.bind()
。