jQuery添加事件处理程序来评估'ed元素

jQuery adding event handlers to eval'ed elements

本文关键字:ed 元素 评估 添加 事件处理 程序 jQuery      更新时间:2023-09-26

我有一个表动态生成的jQuery,使用

this.html("<table><tr><td><div>Click Me</div></td></tr></table>");

在表中,我有几个div (为了简单起见,我的示例只显示了一个),我想为其添加单击事件处理程序。我想保持html的干净和使用尽可能多的jQuery的力量,我可以,但因为我正在做一个'eval'类型的事情,我不能完全弄清楚如何做到这一点。

我知道,我可以使用$("div[some attribute selector]").on("click", {}, clickHandler);,但在我的情况下,这是一个好主意吗?

您需要委托事件。要做到这一点,只需像这样使用jquery的on()方法:

$(document.body).on('click', 'div', function( event ) {
    // do something
});

Ref。: .delegate(), .on()

那是什么?几乎所有的事件都会发生我们所说的"泡沫"。这意味着,如果单击一个嵌套元素,浏览器将查看该节点上是否有关联的单击事件处理程序。如果有,则执行它们,然后还询问该元素的父元素是否有单击事件处理程序。这个过程一直持续,直到某个处理程序prevents从进一步冒泡中取出事件,或者我们已经到达document.documentElement (html)。

因此,您应该上面的document.body更改为相对于您动态添加的元素最接近的节点。

你可以使用live或者delegate来完成