2012-02-02 2 views
0

첫 번째 버전 :이 버전 중 jQuery에서 더 뛰어난 것은 어느 것입니까?

$(".myClass").focus(function() { 
    var MyRef=$(this); 
    if (MyRef.val() == MyRef.attr("rel")) { 
     MyRef.val(""); 
    } 
}); 

$(".myClass").focusout(function() { 
    var MyRef=$(this); 
    if (MyRef.val() == "") { 
     MyRef.val(MyRef.attr("rel")); 
    } 
}); 

두 번째 버전 :

$(".myClass").focus(function() { 
    if ($(this).val() == $(this).attr("rel")) { 
     $(this).val(""); 
    } 
}); 

$(".myClass").focusout(function() { 
    if ($(this).val() == "") { 
     $(this).val($(this).attr("rel")); 
    } 
}); 

그래서하지 않고 변수에 this을 저장하거나 사용? 아니면 변화가 없습니까? 새 jQuery를 객체에게 당신이 this에 jQuery를 방법을 적용 할 때마다 구성 할 필요가 없기 때문에 더 빨라집니다 this을 포함하는 jQuery를 개체에 대한 참조를 저장

답변

2

는 포장 jQuery를 세트의 현재 요소를 캐싱하는 것은 다음 코드 중 하나를보다 더 효율적으로 될 것입니다 -

실제로 이러한 함수 내부에서 모든 jQuery를 방법을 사용할 필요가 없습니다, 말했다 표준 DOM 요소를 jQuery 랩핑 세트로 변환해야하는 작업이므로 권장되는 방법입니다. 그러므로 나는 첫 번째 접근법을 추천 할 것이다.

jQuery 객체에서 DOM 요소를 래핑 할 때 명명 규칙을 따르는 것이 좋습니다. 개인적으로 나는 항상 $this 호출 - 달러가 나에게 그것의 jQuery 객체 (내가 사용하는 다른 규칙을) 지시 및 this는 나는 (jQuery(this) 전화에서 당신을 저장하기 때문에 첫 번째가 더 낫다고 생각은 현재 요소

2

. 첫 번째 예에서는 $으로 전화가 왔습니다. 경우 -

MyRef.val(MyRef.attr("rel")); 
+0

예! 잘못된 복사 및 붙여 넣기 :) – markzzz

2

전자는 일반적으로 선호된다 :

$(MyRef.val(MyRef.attr("rel")); 

는되어야한다 : 두 번째 예에서는 3

내가 여기서 무슨 일을하는지 잘 모르겠어요있다 당신은 동일한 jQuery 생성자를 계속해서 캐시해야합니다.

$(".myClass").focus(function() { 
    if (this.value === this.getAttribute('rel') { 
     this.value = ''; 
    } 
}); 

$(".myClass").focusout(function() { 
    if (this.value === '') { 
     this.value = this.getAttribute('rel'); 
    } 
}); 
1

의 날을 알려줍니다 함수에 대한 호출) lot of times

관련 문제