This question already has answers here:
jQuery .on function for future elements, as .live is deprecated [duplicate]

(2 个回答)



How to apply live() like feature for JavaScript appended DOM elements

(4 个回答)


8年前关闭。




任何模拟或替代实时 jquery 功能?

我需要使用没有 JQuery 和 JQuery.Live 的实时函数的替代方法。

特别是我需要为页面上的 future 元素使用 addEventListner 。

有什么替代方案吗?

谢谢

最佳答案

像下面这样的东西应该工作:

var live = function(elm, eventType, callback) {
    document.addEventListener(eventType, function(event) {
        if(event.target === elm) {
            callback.call(elm, event);
        }
    });
};

然后你可以像下面这样使用它:
var element = document.getElementById('test');
live(element, 'click', function() {
  // handle click event here
});

编辑:下面的评论很棒。这是修订版:
var live = function(selector, eventType, callback) {
    document.addEventListener(eventType, function(event) {
        var elms = document.querySelectorAll(selector),
            target = event.target || window.event.srcElement;
        for (var i=0; i<elms.length; i++) {
            if (elms[0] === target) callback.call(elms[i], event);
        }
    });
};

将它与 css 选择器一起使用
live('#test', 'click', function() {
    // handle click event here
});

jsFiddle:http://jsfiddle.net/49aJh/2/

关于javascript - 为当前元素和 future 元素添加事件监听器的实时 jquery 函数的任何仿真或替代方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16694269/

10-12 12:28
查看更多