首先我注册一个活动
$(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]");
问题是我再次附加事件,它不会触发。
答案 0 :(得分:0)
$(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);
请注意,您也可以定义开关变量,而不是使用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;
答案 1 :(得分:0)
要打开它:
$(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));
}
});