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