$('.ajax').click
(
function()
{
// If been bound then we need to return here.
alert(':D');
}
)
$('.ajax').click
(
function()
{
// If been bound then we need to return here.
alert(':D');
}
)
在这种情况下,我调用了重复的代码。如何检测事件是否已被绑定以防止它触发两个警告框?
答案 0 :(得分:24)
在jQuery中有一个非常好的方法。
这是一个例子。
function alertEvent() {
alert(":D");
}
$(".ajax").bind("click", alertEvent);
//When you want to ensure it won't happen twice...
$(".ajax").unbind("click", alertEvent);
$(".ajax").bind("click", alertEvent);
此方法仅删除您指定的事件,这使其成为您想要做的事情的理想选择。
答案 1 :(得分:19)
如果使用jQuery> = 1.7,您可以将.on()/.off()
API与事件命名空间结合使用。在此示例中,立即调用.off()
以确保命名空间的先前事件(任何类型)都是未绑定的:
$("form")
.off(".validator")
.on("keypress.validator", "input[type='text']", validate);
这是一个非常灵活的API,因此如果你需要,你可以非常具体:
$("form")
.off("keypress.validator", "input[type='text']", validate)
.on("keypress.validator", "input[type='text']", validate);
答案 2 :(得分:7)
答案 3 :(得分:0)
function demo()
{
// your code here which will called on click event
}
$(document).ready(function(){
$('.add').bind('click',demo);
});
//After successfully ajax call response
//Unbind the click event first
$('.add').unbind('click',demo);
//Then again bind the event
$('.add').bind('click',demo);