jquery.on()获取对附加侦听器的引用

时间:2017-06-04 06:17:41

标签: jquery addeventlistener

我附上了一个事件监听器:

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);
                    }
                });

3 个答案:

答案 0 :(得分:1)

在调用.off()时使用选择器而不是使用选择器。使用当前事件的目标。

function handler(event) {
    if (hasLoaded()) {
        $(this).off('DOMSubtreeModified', handler);
        otherStuff(event.email);
    }
}

答案 1 :(得分:0)

是的,您只能删除一个处理程序。

医生说: 处理程序也可以通过删除 在handler参数中指定函数名称。当jQuery附加一个事件处理程序时,它会为处理函数分配一个唯一的id。

http://api.jquery.com/off/

答案 2 :(得分:-1)

您可以使用removeEventListener方法。

var listener = selector.addEventListener('DOMSubtreeModified', function() {
    if (hasLoaded()){ 
        selector.removeEventListener('DOMSubtreeModified', listener);
        otherStuff(email);
    } 
});