Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 解除绑定后绑定click事件_Jquery - Fatal编程技术网

Jquery 解除绑定后绑定click事件

Jquery 解除绑定后绑定click事件,jquery,Jquery,我正在解除同一按钮单击上某个按钮的单击事件的绑定。我想绑定上面的按钮,再次单击其他按钮。但它不起作用 $("#showSelection").bind("click", function () { alert("in"); //unbinding the button click $('#showSelection').unbind('click'); }); $("#kendowindow").click(function(){ al

我正在解除同一按钮单击上某个按钮的单击事件的绑定。我想绑定上面的按钮,再次单击其他按钮。但它不起作用

    $("#showSelection").bind("click", function () {
    alert("in");
    //unbinding the button click
    $('#showSelection').unbind('click');
    });


   $("#kendowindow").click(function(){
     alert("in2"); 
     //want to bind the click event again but not working     
     $('#showSelection').bind('click');           
    });

您不能仅仅重新绑定它,您必须再次添加整个回调函数

为了方便起见,您可以使用一个命名函数,对于较新版本的jQuery,您应该使用
on()
off()
,如果您只想每个元素触发一次事件处理程序,甚至还有
one()
,并且在使用ID时,您只有一个匹配的元素,因此:

function doStuff() {
    alert("in");
});

$("#showSelection").one("click", doStuff);

$("#kendowindow").on('click', function(){
     alert("in2"); 
     $("#showSelection").off('click').one("click", doStuff);
});
您可以使用jQuery的.one()只运行第一次单击事件一次:

$("#showSelection").one("click", function(){
    alert("in"); 
}); 

$("#kendowindow").click(function(){
    alert("in2"); 
    $("#showSelection").on("click", function(){
        alert("new event bound"); 
    });      
});

然而,我不确定你到底想实现什么样的情景。使用此代码,如果用户首先单击kendowindow,则将为您的showSelection单击分配第二个事件。我不确定这是不是你想要的

您可以按如下方式使用命名函数:

函数bindUnbind(){
控制台。登录(“登录”);
//松开按钮并单击
$(this.unbind('click');
}
$(“#显示选择”).bind(“单击”,bindUnbind);
$(“#kendowindow”)。单击(函数(){
控制台日志(“in2”);
//要再次绑定click事件但不起作用吗
$(“#showSelection”).unbind('click').bind('click',bindinbund);
});

显示选择

剑道窗口
查看@adeneo的答案。如果要重新绑定同一事件,最好创建一个可以调用的函数,这样就不必重复。感谢您的回复:)感谢您的回复:)