Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用remove()从列表中删除某些项后显示相同的长度_Javascript_Jquery - Fatal编程技术网

Javascript 使用remove()从列表中删除某些项后显示相同的长度

Javascript 使用remove()从列表中删除某些项后显示相同的长度,javascript,jquery,Javascript,Jquery,假设我在一个无序列表中有一个包含3项的列表,如下所示 <ul class = "list"> <li>1</li> <li>2</li> <li>3</li> </ul> 然后在dom中,我可以看到最后一项被删除。但是如果我 alert(listitems.length); 它显示列表中有3个项目,尽管窗口中只显示了两个项目。javascript是否认为这些行为与此类似?如果是,请解释 li

假设我在一个无序列表中有一个包含3项的列表,如下所示

<ul class = "list">
 <li>1</li>
 <li>2</li>
 <li>3</li>
</ul>
然后在dom中,我可以看到最后一项被删除。但是如果我

alert(listitems.length);

它显示列表中有3个项目,尽管窗口中只显示了两个项目。javascript是否认为这些行为与此类似?如果是,请解释

listitems变量不是“活动的”——因为对于所有jQuery对象,它只记住DOM的状态,就像创建它时一样。

@Ainitak是正确的。这样做:

var listitems = $('.list li');
listitems.eq(2).remove();
listitems = $('.list li');
console.log(listitems.length);

在页面加载时,您将
.list li
放入变量中,其原始值将分配给内存,除非您对其进行更新。您必须使用
$('.list li')。长度
或更新该变量:

var listitems=$('.list li');
等式(2).remove();
log($('.list li').length)

  • 一,
  • 二,
  • 三,
此时,listitems包含3项,因为dom中有3项。现在什么时候执行 等式(2).remove();此行从dom而不是从listitems中删除元素

预警前(listitems.length);您需要从dom获取li元素。将此行置于alert()之前


您必须使用$('.list li')再次访问列表项;它应该显示正确的长度。请添加解释。解释已经在另一个答案和评论部分中。问题仍然是jquery不更新变量,只更新“.remove()”调用上的DOM,因此应该再次访问DOM以获得正确的变量长度DOM@LalasMuathasim这将有助于$('.list li').eq(2).remove();log($('.list li').length);
var listitems = $('.list li');
listitems.eq(2).remove();
listitems = $('.list li');
console.log(listitems.length);
var listitems = $('.list li'); 
listitems = $('.list li');