我有以下功能:
$(".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/
答案 0 :(得分:1)
正如评论中所述,您已删除该元素,因此$(this).parent()
不再引用任何内容。
首先尝试存储父级:
var $parent = $(this).parent(), $selItem = $(this).parents(".selectedItems");
$parent.remove();
if( $selItem.children().length === 0) {
alert("Hello!");
}
答案 1 :(得分:0)
像这样改变选择器,
$(this).parents('.selectedItems').children().length
您也正在删除父$(this).parent().remove();
。
也改变了
答案 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');
}
});