简单版的jquery live函数

是否有可能为jquery的live()具有类似function的事件处理程序获得纯javascript函数? 我需要能够将事件附加到尚未创建的对象,但jquery-livequery以及jquery-events源由于依赖于jquery核心而无用。

事件委托非常简单。 举个例子:

标记:

 

Test

Test

Test

脚本:

 document.getElementById("container").onclick = function(e) { // e.target is the target of the event or "source element" alert(e.target.innerHTML); }; // dynamically adds new paragraph on button click document.getElementById("add").onclick = function() { var p = document.createElement("p"); p.innerHTML = "a new paragraph"; document.getElementById("container").appendChild(p); }; 

由于事件处理程序附加到父级,因此它将适用于任何将来插入的元素。

你可以在这里试试。

有用的参考:

是的,它被称为事件委托,并且比jQuery和“实时”更长。

“live”通过侦听正文或文档上的事件来工作,然后当事件发生时查看event.target以查看它的选择器是否与存储在缓存中的选择器匹配。 效率很低,但对某些人来说还行。

更有效的方法是将想要侦听器的元素添加到数组中,然后在要为其委派事件的元素的最低共同祖先上侦听冒泡事件。 body元素是后备,但效率最低。 当侦听器获取正在等待的事件时,检查event.target是否是数组中的元素之一,如果是,则使用元素调用相关函数。

您也可以将元素id存储为对象的属性,因此如果您有很多元素,查找它会更快,或者您可以根据类注册事件。

有一些限制和缺陷(某些浏览器中有些事件泡沫但有些事件没有泡沫,有些事件根本没有泡沫),而且效率非常低,因此要小心使用。

我对Jquery和你的function知之甚少。 您正在寻找如何使用javascript中的事件? 你可以这样做:

 element.addEventListener('onclick', function() { //do something }); 

要么

 element.onclick = function() { //do something }); 

element var是dom文档的引用。 有关详细信息,请查看https://developer.mozilla.org/en/DOM 。

JQuery是纯JavaScript和OpenSource,所以只需查看源代码,然后复制您需要的内容并进行调整。