这个问题在这里已经有答案了:
动态创建元素上的事件绑定?
(23个答案)
(23个答案)
四年前关闭的
<;html>;
<;头>;
<;script type=“text/javascript”src=”https://stackoverflow.com/questions/6658752/jquery.js“></脚本>;
<;script type=“text/javascript”>;
$(文档).ready(函数(){
$(“按钮”)。单击(函数(){
$(“h2”).html(“<;p class='test'>;单击我<;/p>;”)
});
$(“.test”)。单击(函数(){
警惕();
});
});
</脚本>;
</头>;
<;车身>;
<;h2></h2>;
<;按钮>;生成新元素</按钮>;
</车身>;
</html>;
我试图在<;h2>通过单击按钮。我还定义了一个与test关联的点击事件。但这项活动不起作用
有人能帮忙吗
您正在使用的click()绑定称为“直接”绑定,它只将处理程序附加到已存在的元素上。它不会绑定到将来创建的元素。为此,您必须使用()上的创建一个“委托”绑定
委派事件的优点是,它们可以处理来自子元素的事件,这些子元素将在以后添加到文档中
来源
以下是您要查找的内容:
var counter=0;
$(“按钮”)。单击(函数(){
$(“h2”)。追加(<;p class='test'>;单击我“+(++counter)+”<;/p>;)
});
//带on()
$(“h2”)。在(“单击”,“p.test”,函数()上{
警报($(this.text());
});
<;脚本src=”https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js“></脚本>;
<;h2></h2>;
<;按钮>;生成新元素</按钮>
以上内容适用于使用jQuery版本1.7+的用户。如果您使用的是旧版本,请参考下面的上一个答案
先前的答案:
尝试使用live():
$(“按钮”)。单击(函数(){
$(“h2”).html(“<;p class='test'>;单击我<;/p>;”)
});
$(“.test”).live('单击',函数()){
警惕(“你点击了我!”);
});
为我工作。用jsFiddle试过了
或者有一种新的方法可以通过delegate():
$(“h2”)。委托(“p”,“单击”,函数(){
警惕(“你又点击我了!”);
});
更新的JSFIDLE