我附上了一个事件监听器:
selector.on('DOMSubtreeModified', {email: email}, handler);
function handler(event) {
if (hasLoaded()) {
selector.off('DOMSubtreeModified', handler);
otherStuff(event.email);
}
}
这可能会多次发生,当第一个事件触发off方法时,所有侦听器都会被删除。是否可以仅针对特定附件触发。类似的东西:
var listener = selector.on('DOMSubtreeModified', function() {
if (hasLoaded()) {
selector.off(listener);
otherStuff(email);
}
});
答案 0 :(得分:1)
在调用.off()
时使用选择器而不是使用选择器。使用当前事件的目标。
function handler(event) {
if (hasLoaded()) {
$(this).off('DOMSubtreeModified', handler);
otherStuff(event.email);
}
}
答案 1 :(得分:0)
是的,您只能删除一个处理程序。
医生说: 处理程序也可以通过删除 在handler参数中指定函数名称。当jQuery附加一个事件处理程序时,它会为处理函数分配一个唯一的id。
答案 2 :(得分:-1)
您可以使用removeEventListener方法。
var listener = selector.addEventListener('DOMSubtreeModified', function() {
if (hasLoaded()){
selector.removeEventListener('DOMSubtreeModified', listener);
otherStuff(email);
}
});