Javascript 隐藏/显示多达100个DOM元素的最有效方法是什么?
假设您最多有100个元素,其中它们的类型和格式不会改变,但它们的上下文会改变。(它们基本上是行)Javascript 隐藏/显示多达100个DOM元素的最有效方法是什么?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,假设您最多有100个元素,其中它们的类型和格式不会改变,但它们的上下文会改变。(它们基本上是行) 这些行已绑定到输入,并将随着用户的键入而更改 实现最高性能的最佳方法是什么?重用元素,保留所有元素,但更改其上下文?还有别的吗 编辑、澄清: 搜索算法是不相关的,但我确实使用了MVVM(angularjs)框架,所以我所做的搜索是基于JavaScript的,不是瓶颈;得到结果后,我会相应地更新 另外,我不需要在DOM上搜索元素,我有对元素的引用,我希望在更新过程中最小化运行时间。如果只有100个元素
这些行已绑定到输入,并将随着用户的键入而更改 实现最高性能的最佳方法是什么?重用元素,保留所有元素,但更改其上下文?还有别的吗 编辑、澄清:
搜索算法是不相关的,但我确实使用了MVVM(angularjs)框架,所以我所做的搜索是基于JavaScript的,不是瓶颈;得到结果后,我会相应地更新
另外,我不需要在DOM上搜索元素,我有对元素的引用,我希望在更新过程中最小化运行时间。如果只有100个元素,这并不重要。只需设置样式对象的
display
属性来显示或隐藏它们。使用所有行的唯一id,并使用jquery通过更改它们的值来操作它。最好的方法是,将所有这些元素包装在一个div中,并将样式设置为外部div(假设它们是按您所说的行组合在一起)
为包装器div设置适当的样式
通常情况下,我认为我们不需要担心这些事情的性能,因为它们是非常琐碎的操作。对于代码,这样就可以了
$(element).css('display' , 'none');
但性能问题取决于您如何找到这些元素,
关键是将元素包装到容器中,并仅搜索该容器中的元素:
$('container').find('your_elements').css('display' , 'none');
或
$('your_elements', 'container').css('display' , 'none');
我会的
永远不要这样做:
$('your_elements').css('display' , 'none');
JS必须在整个dom中搜索该我认为创建一个带有display none的CSS类,并将该类应用于TR元素,通过这样做,您将能够利用jquery选择器供以后使用
$('TR.hidden')
和if(!$('TD').hasClass('hidden'))
如何在DIV中添加TR元素?实际上,您需要担心DOM操作性能,因为它是大多数js应用程序中最糟糕的性能瓶颈。我告诉过您,正如问题所说,它只有100个元素。ID在文档中应该是唯一的,而使用类是更好的方法。@Kashif Naseem是的……使用类也是有效的解决方案,但如果有20行和您必须更新第13行。然后任何新手都很难通过类选择该行。因此我建议使用ID,因为它是唯一的。
$('your_elements').css('display' , 'none');