Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
为了优化jQuery',向数百个元素添加id值得吗;她的表现如何?_Jquery_Performance_Jquery Selectors_Dom Manipulation - Fatal编程技术网

为了优化jQuery',向数百个元素添加id值得吗;她的表现如何?

为了优化jQuery',向数百个元素添加id值得吗;她的表现如何?,jquery,performance,jquery-selectors,dom-manipulation,Jquery,Performance,Jquery Selectors,Dom Manipulation,我需要在一个站点上使用jQuery进行大量HTML操作,在这个站点上有数百个产品以相同的结构显示。几乎所有代码块都单独包装在一个具有相同类名的div容器中 现在我想知道是否应该在类名中插入一个唯一的ID,这样我就可以使用$('#ID')而不是$('.class')来进行HTML操作。从#3中获得想法 我可能会使用for循环在类之后插入一个id来创建id。这值得花时间吗?更重要的是,这是否有助于提高绩效 编辑: 对于我将要进行的操作类型,肯定会经常使用For循环。 此外,我不太确定分页是否对性能有

我需要在一个站点上使用jQuery进行大量HTML操作,在这个站点上有数百个产品以相同的结构显示。几乎所有代码块都单独包装在一个具有相同类名的div容器中

现在我想知道是否应该在类名中插入一个唯一的ID,这样我就可以使用$('#ID')而不是$('.class')来进行HTML操作。从#3中获得想法

我可能会使用for循环在类之后插入一个id来创建id。这值得花时间吗?更重要的是,这是否有助于提高绩效

编辑: 对于我将要进行的操作类型,肯定会经常使用For循环。 此外,我不太确定分页是否对性能有任何意义。现在产品每页显示10个,用户可以选择每页查看更多内容

是的,ID选择器效率更高。使用它们来缩小您的范围,然后您可以稍后按类进行选择。此外,保存可能重复使用的选择

var container = $("#someId");
var products = container.find(".product");

//later on...

products.find(".class").doSomething();
另外,请记住,
.children()
.find()
更有效,所以尽可能使用它。

是的,ID选择器效率更高。使用它们来缩小您的范围,然后您可以稍后按类进行选择。此外,保存可能重复使用的选择

var container = $("#someId");
var products = container.find(".product");

//later on...

products.find(".class").doSomething();

另外,请记住
.children()
.find()
效率更高,所以尽可能使用它。

这样做可能是一种好的做法,但只有当页面很大(有许多元素)或多次选择元素(即在循环中)时,您才会注意到差异

在周期外选择所需的元素,并在其内部使用引用,这样会更好、更容易

var obj = $('#someid');
while (expression){obj.something();}

这样做可能是一种很好的做法,但只有当页面很大(有许多元素)或多次选择元素(即在循环中)时,您才会注意到差异

在周期外选择所需的元素,并在其内部使用引用,这样会更好、更容易

var obj = $('#someid');
while (expression){obj.something();}

如果您现在用一个类来检索元素以执行某些操作,并打算按类执行相同的检索以添加ID,然后按ID检索元素,则不是这样!您可以通过指定父标记类型等使其更好,例如div#Parent span.spanChild h1无需指定带有
ID
选择的标记名,因为和ID已经是您可能获得的最具体的标记名。@nathanhayfield,我对页面中的每个产品都有一个跨域的请求,它在视觉上变慢了。如果你索引数据库,它可能会加快速度。如果你现在用一个类检索元素来做一些事情,并打算按类进行相同的检索来添加ID,然后按ID检索元素,不,不是!您可以通过指定父标记类型等使其更好,例如div#Parent span.spanChild h1无需指定带有
ID
选择的标记名,因为和ID已经是您可能获得的最具体的标记名。@nathanhayfield,我对页面中的每种产品都有一个跨域请求,它的视觉速度越来越慢。如果你为数据库编制索引,它可能会加快速度