jQuery .length或.size

时间:2014-03-10 13:58:39

标签: javascript jquery

我有以下功能:

$(".selectedItems").on('click', '.deleteItem', function (event) {

   $(this).parent().remove();

   if ($(this).parent('.selectedItems').children().length === 0) {
       alert('hello');
   }

});

与以下html结合使用:

<div class="selectedItems">
    <div class="item">
    </div>
    <div class="item">
    </div>
</div>
<div class="selectedItems"> 
      <div class="item">
      </div>
      <div class="item">
      </div>
</div>

问题是大小总是显示为0而且我的if语句一直在触发,我一直在看这段代码..我不确定可能是什么问题。

您可以在此处找到指向jsfiddle的链接:http://jsfiddle.net/kmcbride/UpGgQ/6/

3 个答案:

答案 0 :(得分:1)

正如评论中所述,您已删除该元素,因此$(this).parent()不再引用任何内容。

首先尝试存储父级:

var $parent = $(this).parent(), $selItem = $(this).parents(".selectedItems");
$parent.remove();
if( $selItem.children().length === 0) {
    alert("Hello!");
}

Updated Fiddle

答案 1 :(得分:0)

像这样改变选择器,

$(this).parents('.selectedItems').children().length

您也正在删除父$(this).parent().remove();

也改变了

Demo

答案 2 :(得分:0)

在从DOM中删除项目之前,您需要首先保存有多少项目的计数。否则,对DOM的引用将丢失。

http://jsfiddle.net/thinkingmedia/zXnDa/

$(".selectedItems").on('click', '.deleteItem', function (event) {
    var count = $(this).closest(".selectedItems").find(".item").length;
    $(this).closest(".item").remove();
    if (count == 1) {
        alert('hello');
    }
});