Javascript 为什么:lt()没有按预期工作?

Javascript 为什么:lt()没有按预期工作?,javascript,jquery,Javascript,Jquery,你能告诉我为什么吗:它不工作了。这是我的密码: 我试着一开始只显示100个项目,当用户滚动时,它应该显示另外100个项目 作用{ "严格使用",; $function{ var-str=; var x=100; var initialData=; 对于变量i=0;i=$this[0]。scrollHeight{ x+=100; $'myList li:lt'+x+.show; } } }; 为什么这条线不行 $('#myList li:lt(' + x + ')').show(); 我真的怀

你能告诉我为什么吗:它不工作了。这是我的密码:

我试着一开始只显示100个项目,当用户滚动时,它应该显示另外100个项目

作用{ "严格使用",; $function{ var-str=; var x=100; var initialData=; 对于变量i=0;i<1000;i++{ str+=+i+; } str+= //str数据完整; //仅加载前100个元素 $'container'.appendstr; $'myList li:lt'+x+.show; } $“容器”。在“滚动”上,函数{ 如果$this.scrollTop+$this.innerHeight>=$this[0]。scrollHeight{ x+=100; $'myList li:lt'+x+.show; } } }; 为什么这条线不行

$('#myList li:lt(' + x + ')').show();

我真的怀疑这是否是实现你们真正想要做的事情的正确方法。不管怎样,你缺少了隐藏元素

作用{ "严格使用",; $function{ var-str=; var x=100; var initialData=;
forvar i=0;i您的代码存在两个主要问题。首先,x变量超出了scroll事件处理程序的范围。其次,li元素在加载时已经可见,因此对它们调用show将没有任何效果

要解决此问题,请将x定义放在更高的范围内,并使用CSS仅在页面加载时显示相关元素。请尝试以下操作:

$function{ "严格使用",; var x=100; var-str=; 对于变量i=0;i<1000;i++{ str+=+i+; } str+= $'container'.appendstr; $“容器”。在“滚动”上,函数{ 如果$this.scrollTop+$this.innerHeight>=$this[0]。scrollHeight{ x+=100; $'myList li:lt'+x+.show; } } }; 容器{ 高度:300px; 边框:1px实心; 溢出:自动; } .隐藏{ 显示:无; } .展示项目{ 显示:块; } /*这是必需的部分*/ 集装箱li:n-child-n+100{ 显示:列表项; } 集装箱李{ 显示:无; }
添加您的html并让我知道X不在最后一个事件处理程序的范围内。此外,您的if语句在命中时将不起任何作用,因为您选择的li将已显示。如果您一次显示100个元素,则您的滚动将不显示。然后,您将无法添加更多元素。无论如何,至少需要隐藏一些元素,以便滚动出现当你滚动时。新元素将添加感谢@Tushar。但我认为这不是一个好的做法。因为DOM1000元素不起作用。当滚动到列表末尾时,应该显示下100个元素。最好是OP自己做,请在代码中找到我的注释。我只是告诉他,他没有隐藏不想要的LI。另外,请e避免填鸭式学习,这样人们就可以真正学习了,好吧,别管它了..谢谢你的帮助..当用户像懒洋洋地加载一样到达底部时,有没有办法加载或进入DOM..实际上目前所有数据都在DOM中.但是我不介意,我更喜欢通过错误进行自我学习,而不是让别人完成事情.无论如何,我建议你看看这个插件如果你有很多数据,虚拟化真的很有帮助。谢谢@rory..!!实际上在你的例子中,DOM中有1000个项目。有没有办法第一次只有100个项目进入DOM。当用户滚动时,然后在DOM中加载更多数据这是正确的-我刚刚修复了原始逻辑中的错误OK..谢谢你的帮助。有没有办法做到这一点。或者will我使用pluginSure,当滚动处理程序中的if条件为hit时,您可以使用一个循环附加另外100 li元素。您可以共享任何小提琴吗