2016-09-30 2 views
-1

PyCharm은 다음 코드에 대해 이렇게 설명합니다. "비효율적 인 jQuery 사용법" 이 코드에 대한"비효율적 인 jQuery 사용법"을 이해하지 못합니다.

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

같은 : 당신은 유사한 쿼리를 많이 제작하고 :eq() 선택을 많이 사용하고

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

무슨 일에 대해 생각 할 때마다 검색 너무 많은 DOM을 방지 할 수 있습니다. 모든 입력을 한 번 가져다 보면 얻을 수 있습니다. 그것을 버리는 것보다. 다음에 다른 입력을 다시 찾아서 다른 입력을 찾으십시오. – epascarello

답변

3

스토어 모음 같은 선택 그룹에 대한

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

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

//etc.. 
1

나는이 효율적으로 만들 수있는 방법을 잘 모릅니다. 단일 쿼리를 만든 다음 결과를 반복하는 것이 더 효율적입니다. 이는 쿼리 할 때마다 선택기 문자열을 구문 분석 한 다음 전체 문서에서 해당 선택기와 일치하는 요소를 확인해야하기 때문입니다. 한 번만 쿼리를 수행함으로써

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

each() 기능은 이미 처리와 불필요한 선택을 할 필요가 없습니다 필요가 어떤 요소를 알 수 있습니다. 중복 쿼리를 제거 할 수 있으면 언제든지 스크립트를보다 효율적으로 만들 수 있습니다.

관련 문제