首先取消绑定然后绑定(jquery)
我有一个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函数上再次绑定事件?
请建议。谢谢。
看看你的问题,你unbind
它之后似乎没有绑定click
,所以它不会开火。 (假设你保持了你的function顺序)。 你必须这样做:
//Set a function with the action you need to do after you click the train function trainClick() { alert('train is clicked'); //do some stuff }
当您解除绑定时,使用函数名称调用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);
希望这可以帮助!
绑定和绑定处理器
关键是范围。
你必须在事件处理程序之外声明和定义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