删除班级时。关于班级长度的改变?

时间:2011-10-14 13:19:18

标签: javascript jquery

<% (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

4 个答案:

答案 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);
    }
)