调用
我在取消绑定一个侦听共享发射器之一的侦听器时遇到问题:
// this is emitter. Fire always in a.b.c namespace but with different parameters
$(document).trigger("a.b.c", {
p: 1,
p2: ...
});
// listener 1
$(document).bind("a.b.c", function(e, object) {
if (object.myParam) {
....
}
});
// listener 2
$(document).bind("a.b.c", function(e, object) {
if (object.anotherParam) {
....
}
});
如何解绑侦听器 2,让侦听器 1 仍然继续工作?
保存对处理程序的引用,以便以后可以unbind
它:
var listener = function(e, object) {
if (object.anotherParam) {
....
}
};
$(document).bind("a.b.c", listener);
// sometime later:
$(document).unbind("a.b.c", listener);
我找到了更好的解决方案 命名空间事件
// this is emitter. Fire always in a.b.c namespace but with different parameters
$(document).trigger("a.b.c", {
p: 1,
p2: ...
});
// listener 1
$(document).bind("a.b.c.listener1", function(e, object) {
if (object.myParam) {
....
}
});
// listener 2
$(document).bind("a.b.c.listener2", function(e, object) {
if (object.anotherParam) {
....
}
});
现在绊倒a.b.c
将以listener1
和listener2
触发.要取消绑定 - 只需与特定侦听器取消绑定,例如:
$(document).unbind("a.b.c.listener1");
在这种情况下,listener2
将被保留,并且能够通过命名空间a.b.c