2016-09-30 38 views
-1

PyCharm对此说明了如下代码:“效率低下的jQuery使用情况”,没有提供任何有价值的解释。我不知道我怎么能做出这种高效:我不明白这种“效率低下的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)); 
    } 
} 
+1

想想会发生什么搜索相同的选择组。你一次查找所有的输入来得到一个。比扔掉它一切。比下一次你再次查找所有输入来找到另一个输入。 – epascarello

回答

3

商店的集合,以避免这么多DOM每次

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

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

//etc.. 
1

你赚了很多类似的查询和使用:eq()选择很多。进行单个查询然后迭代结果会更高效。这是因为每次查询时,都必须解析选择器字符串,然后检查整个文档以找到与该选择器匹配的元素。

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

通过只做一次查询,该each()功能就已经知道它需要处理,并没有做任何多余选择什么样的元素。任何时候你可以消除多余的查询,你会让你的脚本更有效率。