我需要帮助将这个jquery循环转换为js循环,其行为类似于每个循环,但是对象属性应该使用纯js插入,因为我必须像DOM中的2000个元素一样进行查询,我需要稍微提高性能
$(".single-category li").each(function(){
store_games.push({
skin_id : $(this).attr('data-id'),
category : $(this).parent().attr('data-super-category'),
position : $(".single-category li").index(this),
});
});
TO
var sc = document.querySelectorAll(".single-category li");
var len = sc.length - 1;
for (var i = 0; i <= len; i++) {
store_games.push({
skin_id : $(this).attr('data-id'),
category : $(this).parent().attr('data-super-category'),
position : $(".single-category li").index(this),
});
}
你能帮忙吗?
对于我要做的前两个属性:
skin_id : sc[i].getAttribute("data-id");
category : sc[i].parentNode.getAttribute("data-super-category")
第三个我需要帮助,如果你进一步了解如何提高性能,请告诉我。
答案 0 :(得分:1)
如果在元素集合上调用
.index()
并传入DOM元素或jQuery对象,.index()
将返回一个整数,指示传递元素相对于原始集合的位置强>
(我的重点)
这意味着在这种特定情况下,您可以在那里使用i
:
position: i
(事实上,在jQuery版本中,这可能是一件非常有用的事情,它接收与each
中第一个参数相同的值。引用的jQuery代码做了大量完全没有意义的事情DOM查询。)