JQuery将事件处理程序添加到eval ed元素

时间:2011-12-14 09:33:50

标签: javascript jquery javascript-events

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

this.html("<table><tr><td><div>Click Me</div></td></tr></table>");
在表格中,我有几个 divs (我的示例只显示了一个简单的东西),我想添加点击事件处理程序。我想保持html干净并尽可能多地使用JQuery的功能,但是因为我正在做一个'eval'类型的东西,所以我无法弄清楚如何做到这一点。

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

2 个答案:

答案 0 :(得分:3)

您需要委派活动。要做到这一点,只需使用jQuerys on()方法,如下所示:

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

参考:.delegate().on()

那是什么?几乎所有事件都是我们所谓的“泡沫”。这意味着,如果单击嵌套元素,浏览器将查看该节点上是否存在任何单击事件处理程序。如果是这样,它将执行它们,然后还会询问该元素的父元素是否存在任何单击事件处理程序。这一直持续到某个处理程序prevents来自进一步冒泡的事件或我们已达到document.documentElement(html)。

因此,相对于动态添加的元素,您应将<{>}更改最近的节点。

答案 1 :(得分:0)

您可以使用livedelegate来执行此操作