我有一个由jQuery动态生成的表,使用
this.html("<table><tr><td><div>Click Me</div></td></tr></table>");
在表中,我有一些 * div *(为了简单起见,我的示例只显示了一个),我想在其中添加click事件处理程序。我希望保持html干净,并尽可能多地使用jQuery的功能,但由于我正在做一个'eval'类型的事情,我不知道如何做到这一点。
我知道,我可以使用$("div[some attribute selector]").on("click", {}, clickHandler);
,但在我的情况下,这是一个好主意吗?
2条答案
按热度按时间wn9m85ua1#
您需要委托事件。为此,只需使用jQuerys
on()
方法,如下所示:参考编号:.delegate()、.on()
这是什么?几乎所有的事件都做我们称之为“冒泡”的事情。这意味着,如果你点击一个嵌套的元素,你的浏览器会查看是否有任何点击事件处理程序与该节点关联。如果有,它执行它们,然后还询问该元素的父元素是否有任何click-event处理程序。这一直持续到某个处理程序
prevents
事件不再冒泡,或者我们已经到达document.documentElement
(html)。因此,您应该将上面的
document.body
更改为相对于动态添加的元素最近的**节点。ubby3x7f2#
您可以使用live或delegate来执行此操作