这似乎非常简单但我无法理解为什么它不起作用。
$('.some-containers').each(function () {
var $ul = $(this).find('ul');
var $items = $ul.find('li');
console.log($items.length); //5
if ($items.length > 2) {
var $last = $items.last().detach();
console.log($items.length); //still 5
}
}
我的问题是,为什么在删除或分离最后一项后,还有最后一项?
答案 0 :(得分:4)
将detach()
视为DOM中元素集合的副本,而不是引用。 $items
对DOM进行操作,并从DOM中删除指定的元素。
再次将$items = $ul.find('li');
重新分配给该集合:
$ul.find('li').length
或只做{{1}},长度将反映实际值。
示例(感谢@MartinGottweis):https://jsfiddle.net/j7hqnhb3/