我有一个由JQuery动态生成的表,使用
this.html("<table><tr><td><div>Click Me</div></td></tr></table>");
在表格中,我有几个 divs (我的示例只显示了一个简单的东西),我想添加点击事件处理程序。我想保持html干净并尽可能多地使用JQuery的功能,但是因为我正在做一个'eval'类型的东西,所以我无法弄清楚如何做到这一点。
我知道,我可以使用$("div[some attribute selector]").on("click", {}, clickHandler);
,但在我的情况下这是个好主意吗?
答案 0 :(得分:3)
您需要委派活动。要做到这一点,只需使用jQuerys on()
方法,如下所示:
$(document.body).on('click', 'div', function( event ) {
// do something
});
参考:.delegate(),.on()
那是什么?几乎所有事件都是我们所谓的“泡沫”。这意味着,如果单击嵌套元素,浏览器将查看该节点上是否存在任何单击事件处理程序。如果是这样,它将执行它们,然后还会询问该元素的父元素是否存在任何单击事件处理程序。这一直持续到某个处理程序prevents
来自进一步冒泡的事件或我们已达到document.documentElement
(html)。
因此,相对于动态添加的元素,您应将<{>}更改到最近的节点。
答案 1 :(得分:0)