1.我有一个onclick事件,
$('#locations').click(function(){
$('#train').unbind('click');
//do some stuff
}
2.单击关闭按钮
$('.close').click(function(){
//do some stuff
}
3.然后再次点击#train
$('#train').bind('click', function() {
alert('train is clicked');
//do some stuff
}
现在的问题是#train没有触发。是否要在.close函数上再次绑定事件?
请建议。谢谢。
答案 0 :(得分:36)
看看你的问题,你似乎没有在你click
之后绑定unbind
,所以它不会开火。 (假设你保持了正确的功能顺序)。你必须这样做:
//Set a function with the action you need to do after you click the train
function trainClick() {
alert('train is clicked');
//do some stuff
}
当您解除绑定时,请使用函数名称<{p}}调用unbind
$('#locations').click(function(){
$('#train').unbind('click',trainClick);
//do some stuff
}
然后,要绑定点击(单击#close
时),您将使用:
$('.close').click(function(){
$('#train').bind('click',trainClick);
//do some stuff
}
注意:
更好的方法是使用on
和off
,如果你使用的版本大于jQuery v1.7,那么......好吧..它不会工作。在上面的代码中,只需将bind
替换为on
,将unbind
替换为off
。
$('#train').on('click',trainClick);
$('#train').off('click',trainClick);
希望这有帮助!
答案 1 :(得分:5)
绑定和取消绑定处理
关键是范围。
您必须在事件处理程序之外声明并定义function (trainClick(){stuff it does})
,以便其他按钮“功能可以看到它。
以下是一个例子。
function trainClick()
{
alert("train is clicked"); //Notice this function is declared outside event handlers below
}
$('#button1').on("click", trainClick); //this calls the above function
$("#button2").on("click",function(){
$("#button1").off("click",trainClick); //unbinds button1 from trainClick() function (event handler)
});//End Button 2 click
$("#button3").on("click",function(){
$("#button1").on("click",trainClick); //binds button1 to trainClick() function (event handler)
});//End Button 2 click