当我申请on() - 处理程序时,如果我有多个申请,我更喜欢以下表示法:
$(window).on({
keyup: function (e) {
applyKeyEvents(e, modal);
},
click: function (e) {
applyMouseEvents(e, modal);
}
有人知道如何在这种表示法中设置命名空间吗?
我在这种情况下解决了问题,回到了一个符号:
$(window).on('click.modalClickClose', function (e) {
applyMouseEvents(e, modal);
});
$(window).on('keyup.modalKeyClose', function (e) {
applyKeyEvents(e, modal);
});
但我真的不想重复自己。使用off() - 方法与多个处理程序相同的问题/问题。
这有效:
$(window).off('click.modalClickClose');
$(window).off('keyup.modalKeyClose');
我打赌off() - 事情很简单,但是在过去的15个小时后我没有得到它。
答案 0 :(得分:2)
如果您要将对象传递给.on()
以列出多个事件,您可以(与任何JavaScript对象文字一样)将属性名称放在引号中,如果您需要包含点的属性名称:< / p>
$(window).on({
"keyup.modalKeyClose" : function (e) {
applyKeyEvents(e, modal);
},
"click.modalClickClose" : function (e) {
applyMouseEvents(e, modal);
}
});
根据.off()
documentation,您可以通过在同一个字符串中列出所有处理程序(包含或不包含名称空间)来删除多个处理程序:
$(window).off("keyup.modalKeyClose click.modalClickClose");
请注意,如果您要为两个事件指定相同的命名空间:
$(window).on({
"keyup.modalClose" : function (e) {
applyKeyEvents(e, modal);
},
"click.modalClose" : function (e) {
applyMouseEvents(e, modal);
}
});
...然后您可以通过仅指定命名空间来删除它们:
$(window).off(".modalClose");