我不明白这个"低效的jQuery使用"

时间:2016-09-30 21:27:48

标签: jquery optimization

PyCharm对以下代码说:" jQuery使用效率低下"没有给出任何有价值的解释我不知道如何才能提高效率:

$('#popup-key input:eq(18)').val(key.labelcolor);
$('#popup-key input:eq(19)').val(key.color);

此代码相同:

var i;
for (i = 0; i < 9; ++i) {
    var value = $('#popup-key input:eq(' + (i * 2) + ')').val();
    var size = $('#popup-key input:eq(' + (i * 2 + 1) + ')').val() || defaultSettings.f;
    if (value.trim() != '') {
        clone.labels.push(new Label(value, inputToPositions[i], size));
    }
}

2 个答案:

答案 0 :(得分:3)

存储集合以避免每次dom搜索相同的选择器组

var $input = $('#popup-key input');

$input.eq(18).val(key.labelcolor);
$input.eq(19).val(key.color);

//etc..

答案 1 :(得分:1)

您正在进行大量类似的查询并使用:eq()选择器。创建单个查询然后迭代结果更有效。这是因为每次查询时,都必须解析选择器字符串,然后检查整个文档中是否有与该选择器匹配的元素。

$('#popup-key input').each(function(el, i) {
    $(el).val();
});

只执行一次查询,each()函数已经知道需要处理哪些元素,而不必进行任何不必要的选择。任何时候你可以消除多余的查询,你将使你的脚本更有效。