性能的JQuery slice()或者每个()?

时间:2012-05-10 22:36:47

标签: jquery performance each slice

$('.row').slice(0, 3).css('background-color: green');
$('.row').slice(4, 6).css('background-color: yellow');
$('.row').slice(6, 10).css('background-color: green');

或者

x = 0;
$('.row').each(function() {
   if (x >= 0 && x <= 3) {
      $(this).css('background-color: green');
   }
   if (x >= 4 && x <= 6) {
      $(this).css('background-color: yellow');
   }
   if (x >= 6 && x <= 10) {
      $(this).css('background-color: green');
   }
   x++;
});

一个比另一个快吗?

2 个答案:

答案 0 :(得分:4)

使用切片。每个迭代都会进行比较。切片只会占据列。 Plus slice更好地表达了意图 - 这将允许更好的优化(如果有的话)并且代码更具可读性。

答案 1 :(得分:0)

完全使用您的示例并主要考虑性能,纯css解决方案可能更快:

.row:nth-child(-n+10) { background-color: green; }
.row:nth-child(-n+6)  { background-color: yellow; }
.row:nth-child(-n+3)  { background-color: green; }

订单看起来相反,但它的作用是:首先,前10名中的所有10个项目都将变为绿色,然后前6名为黄色,然后前3名为绿色。

但这仅适用于静态html。如果要动态更改选择,请确实使用jquery.slice。