2015-10-20 71 views
0

我解綁定同一個按鈕上的按鈕點擊事件。我想要綁定上面的按鈕再點擊一下其他按鈕點擊。但它不起作用。綁定解除綁定後的點擊事件

$("#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');   
    }); 

回答

2

你真的不能只是重新綁定,你將不得不再次添加整個回調函數。

爲了簡化這個過程,你可以使用一個命名函數,並且你應該使用on()off()的jQuery的新版本,甚至還有one(),如果你只是想在事件處理每個元素火一次,爲你」重新使用的ID,你只需要一個匹配的元素,因此:

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

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

$("#kendowindow").on('click', function(){ 
    alert("in2"); 
    $("#showSelection").off('click').one("click", doStuff); 
}); 
+0

謝謝你的迴應:) –

0

您可以使用jQuery的。一(),以只運行一次你的第一個點擊事件:

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

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

不過,我不知道如何實際上你試圖完成的是場景。有了這段代碼,如果用戶點擊了kendowindow FIRST,那麼它將爲showSelection點擊分配第二個事件。我不確定這是否是你想要的。

+0

看從@adeneo答案。如果你重新綁定同一個事件,你最好創建一個你可以調用的函數,這樣你就不必重複自己。 –

0

如下您可以使用命名函數:

function bindUnbind() { 
 
    console.log("in"); 
 
    //unbinding the button click 
 
    $(this).unbind('click'); 
 
} 
 

 
$("#showSelection").bind("click",bindUnbind); 
 

 

 
$("#kendowindow").click(function(){ 
 
    console.log("in2"); 
 
    //want to bind the click event again but not working  
 
    $('#showSelection').unbind('click').bind('click',bindUnbind);   
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="showSelection">Show Selection</div> 
 

 
<div id="kendowindow">Kendo Window</div>

+0

謝謝你的迴應:) –