<% (1..3).each do %>
<p id="input">
<input type="text" name="somename"/>
<a class="remove" >Remove</a>
</p>
<% end %>
jQuery的:
var $remove=$(".remove")
$remove.click(
function(){
$(this).parent().remove();
alert($remove.length);
})
始终提醒3
,为什么?我是否正确删除了课程remove
?
答案 0 :(得分:5)
从DOM中删除元素不会破坏$remove
中保存的引用。请改为alert($(".remove").length)
。
修改: Here's a fiddle.
答案 1 :(得分:3)
$remove
指向$(".remove")
定义时的值,它是按值而不是通过引用。这意味着如果$(".remove"
)更改,则不会反映在$remove
中。在查看长度之前,您需要再次查询元素。
答案 2 :(得分:1)
总是三,因为您将数组保存到$remove
var $remove=$(".remove")
$remove.click(function() {
$(this).parent().remove();
alert($remove.length); // saved reference to $('.remove') <-- original call still
})
答案 3 :(得分:1)
$ remove元素集合不会自动更新。但是,您可以再次运行选择器以获得所需的结果:
$(".remove").click(
function(){
$(this).parent().remove();
alert($(".remove").length);
}
)