2016-09-30 37 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()功能就已經知道它需要處理,並沒有做任何多餘選擇什麼樣的元素。任何時候你可以消除多餘的查詢,你會讓你的腳本更有效率。