簡體   English   中英

如何在Jquery中停用嵌套的匿名函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM