[英]How to deactivate a nested anonymous function in Jquery
我有以下代碼:
$('#button-a').click(function(){
$('#button-b').click(function(){
alert('something');
});
});
$('#button-b').click(function(){
// do something
});
單擊#button-a后,如何才能停用嵌套的#button-b函數,所以當我單擊#button-b時,只有最后一個#button-b函數(未嵌套)被激活,而不是同時激活這兩個函數?
使用.on()
和.on()
.off()
事件處理程序嘗試此操作。
$('#button-a').click(function(){
$('#button-b').off('click'); //unbind the click event of the #button-b
$('#button-b').click(function(){
alert('something');
});
});
$('#button-b').on('click',function(){
// do something
});
為了做到這一點,您的功能不能是匿名的。 您需要使用off形式,該形式指定要刪除的處理程序。 稍微重寫一下代碼,看起來像這樣:
function myFunc() {
alert('something');
}
$("#button-a").click(function() {
$("#button-b").click(myFunc);
});
$("#button-b").click(function() {
// do something
});
要刪除處理程序,您可以使用:
$("#button-b").off('click', myFunc);
我不太確定您希望在哪里進行此操作,但是以上代碼行將在DOM已加載且myFunc
在范圍內的任何地方工作。
如果您確實在這里需要匿名處理程序,則可以為您的任務使用事件名稱空間-http: //api.jquery.com/on/
$('#button-b').on('click.nestedClick', function(){ alert('something'); }); // and unbind it at some point: $('#button-b').off('click.nestedClick');
$('#button-a').click(function(){
$('#button-b').trigger('click');
});
$('#button-b').click(function(){
// do something
});
像這樣更改代碼,以便在您單擊按鈕-a時調用按鈕-b的最后一個函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.