click()您正在使用的绑定称为“直接”绑定,它只将处理程序附加到已存在的元素。它不会受到将来创建的元素的约束。为此,您必须使用创建“委托”绑定on()。委托事件的优点是,它们可以处理来自稍后添加到文档的后代元素的事件。
这是你要找的东西:
var counter = 0;
$("button").click(function() {
$("h2").append("
click me " + (++counter) + "
")});
// With on():
$("h2").on("click", "p.test", function(){
alert($(this).text());
});
generate new element
以上适用于使用jQuery 1.7+版本的用户。如果您使用的是旧版本,请参阅下面的上一个答案。
上一个答案:$("button").click(function(){
$("h2").html("
click me
")}); $(".test").live('click', function(){alert('you clicked me!');});
为我工作。用jsFiddle 试了一下。
或者有一种新的方式delegate():$("h2").delegate("p", "click", function(){
alert('you clicked me again!');});