jQuery到纯JS循环特定部分代码,涉及获取索引顺序

时间:2016-12-14 12:49:43

标签: javascript jquery

我需要帮助将这个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")

第三个我需要帮助,如果你进一步了解如何提高性能,请告诉我。

1 个答案:

答案 0 :(得分:1)

来自the documentaton of index

  

如果在元素集合上调用.index()并传入DOM元素或jQuery对象,.index()将返回一个整数,指示传递元素相对于原始集合的位置

(我的重点)

这意味着在这种特定情况下,您可以在那里使用i

position: i

(事实上,在jQuery版本中,这可能是一件非常有用的事情,它接收与each中第一个参数相同的值。引用的jQuery代码做了大量完全没有意义的事情DOM查询。)