在没有jQuery的动态元素上单击事件

时间:2011-03-20 23:55:29

标签: javascript dom

我想将onclick或mouseover等事件添加到动态创建的元素(类似于jQuery中的.live函数)...如何使用纯javascript而不使用jQuery等框架?这是一个简单的jsFiddle http://jsfiddle.net/3tBpv/1/

我希望能够从新创建的divs类而不是id中执行此操作。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:24)

在文档对象上创建一个处理程序。检查目标元素的类和节点名称(标记)。如果匹配,则继续进行任何需要完成的操作,否则忽略点击。

document.onclick = function(event) {
    var el = event.target;
    if (el.className == "new" && el.nodeName == "DIV") {
        alert("div.new clicked");
    }
};

这是fiddle

答案 1 :(得分:3)

@Anurag's answer是正确的但不完整,在大多数情况下会导致很多集成错误。

这是正确的版本:

document.addEventListener("click", function(event)
{
    // retrieve an event if it was called manually
    event = event || window.event;

    // retrieve the related element
    var el = event.target || event.srcElement;

    // for all A tags do the following
    if (el instanceof HTMLAnchorElement )
    {
        //required to make the "return false" to affect
        event.preventDefault();

        window.location.href = "/click.php?href="+encodeURIComponent(el.href);

        //prevent user's click action
        return false;
    }
}, true);

这是一个基本的点击跟踪功能,会影响页面上的所有链接,以跟踪/记录所有链接点击。