簡體   English   中英

jQuery on()和off()不起作用

[英]jquery on() and off() dont work

首先,我注冊一個活動

$(document).on('change',"*[dependent-group]", function (e) {
        e.stopImmediatePropagation();
        debugger;
        if ($(this).val()) {
            obj.dependentLists($(this), $(this).val());
        } else {
            obj.resetLists($(this));
        }
    });

然后我將其關閉

 $(document).off('change',"*[dependent-group]");

問題是我再次附加該事件,它不會觸發。

$(document).on('change',"*[dependent-group]")如何“再次附加事件”? 如果是,則不重新附加第一個處理程序。 您必須通過處理程序。

function handler(e) {
    e.stopImmediatePropagation();
    debugger;
    if ($(this).val()) {
        obj.dependentLists($(this), $(this).val());
    } else {
        obj.resetLists($(this));
    }
}

$(document).on('change',"*[dependent-group]", handler); 
$(document).off('change',"*[dependent-group]", handler);
$(document).on('change',"*[dependent-group]", handler);

請注意,您還可以定義一個switch變量,而不是使用off並重新附加處理程序。

var run = true;
function handler(e) {
    if (!run) return;
    e.stopImmediatePropagation();
    debugger;
    if ($(this).val()) {
        obj.dependentLists($(this), $(this).val());
    } else {
        obj.resetLists($(this));
    }
}

$(document).on('change',"*[dependent-group]", handler); 
// ...
run = false;
// ...
run = true;

打開它:

$(document).find("*[dependent-group]").change( function (e) {
        e.stopImmediatePropagation();
        debugger;
        if ($(this).val()) {
            obj.dependentLists($(this), $(this).val());
        } else {
            obj.resetLists($(this));
        }
    });

要將其關閉:

$(document).find("*[dependent-group]").off('change')

如果您願意,可以系緊安全帶:

$(document).find("*[dependent-group]").off('change').change( function (e) {
        e.stopImmediatePropagation();
        debugger;
        if ($(this).val()) {
            obj.dependentLists($(this), $(this).val());
        } else {
            obj.resetLists($(this));
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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