首先取消绑定然后绑定(jquery)

Pri*_*tra 24 jquery bind onclick unbind

我有onclick事件,

$('#locations').click(function(){
$('#train').unbind('click'); 
//do some stuff
}
Run Code Online (Sandbox Code Playgroud)

2.单击关闭按钮

$('.close').click(function(){
//do some stuff
}
Run Code Online (Sandbox Code Playgroud)

3.再次点击#train

$('#train').bind('click', function() {
alert('train is clicked');
//do some stuff
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是#train没有触发.是否要在.close函数上再次绑定事件?

请建议.谢谢.

kri*_*ath 39

看看你的问题,你似乎没有把它绑在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
}
Run Code Online (Sandbox Code Playgroud)

当您解除绑定时,unbind使用函数名称调用:

$('#locations').click(function(){
 $('#train').unbind('click',trainClick);
//do some stuff
}
Run Code Online (Sandbox Code Playgroud)

然后,要绑定点击(#close单击时),您将使用:

$('.close').click(function(){
  $('#train').bind('click',trainClick);
  //do some stuff
}
Run Code Online (Sandbox Code Playgroud)

注意 :

更好的办法是使用onoff如果你使用的版本比jQuery的V1.7更大,因为,以及..它不会工作.在上面的代码,只需更换bindonunbindoff.

$('#train').on('click',trainClick);
$('#train').off('click',trainClick);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


小智 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
Run Code Online (Sandbox Code Playgroud)