首先取消绑定然后绑定(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 } 

注意 :

一个更好的方法是使用onoff ,如果你使用的版本大于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