例如,如果我点击添加+ 9次,我将有10个盒子。但之后,只有当A单击最后一个框时,它才会隐藏。 (我希望通过单击该框隐藏特定的框)。顺便说一下(并打开)最后一个盒子后,另一个盒子不会以任何方式隐藏 我的问题是什么?
$(document).ready(function(){
$("#add").click(function(){
$(".test:last").clone().insertAfter(this);
})
$(".test").click(function(){
$(this).hide("slow");
})
})
<div id="add">ADD+</div>
<div class="test" style="border:1px solid black; width:70px; height:25px;">
box
</div>
答案 0 :(得分:4)
因为您只是连接文档加载时存在的那个。变化
$(".test").click(function(){
$(this).hide("slow");
})
到
$(".test").live('click', function(){
$(this).hide("slow");
});
click
用于将事件连接到已存在的元素。使用live
,您可以更具推测性,并说“将此事件与任何已存在的事件挂钩,和以后我添加的与此选择器匹配的任何事件。”还有delegate
如果您想要live
的功能,但对于特定元素的后代,则可能很有用。
详细说明:
答案 1 :(得分:3)
使用.clone(true)
代替.clone()
来复制事件处理程序。
示例: http://jsfiddle.net/hQ5Qc/
我还要补充一点,你可能想要改变选择器:
$(".test:last")
到此:
$(".test:visible:last")
所以,如果你隐藏最后一个方框,你就不会克隆一个已经隐藏的方框。
答案 2 :(得分:0)
答案 3 :(得分:0)
$(document).ready(function(){
$(".test").click(function(){
$(this).hide("slow");
})
$("#add").click(function(){
$(".test:visible:last").clone(true).insertAfter(this);
})
})
每条评论建议添加:visible