2012-11-13 2 views
82

내가 요소가 클래스 a이 있는지 여부를 확인하는 다음 스크립트를 건너, 그리고 경우에 추가했다 : 그것은 이미 존재하는 경우"addClass"전에 "hasClass"를 사용해야합니까?

jQuery를로
if (!$("div").hasClass("a")){ 
    $("div").addClass("a"); 
} 

클래스를 추가하지 않습니다,이 변경 될 수 있습니다 :

$("div").addClass("a"); 

그러나 hasClass 처음 사용이 임의의 성능 향상, 또는이 논리 중복 따라서 어쨌든 수행 addClass 동일한 방법을 사용하고 있는가?

답변

133

.hasClass() 체크는 유용하지 않습니다. jQuery will also always check부터 .addClass()까지입니다. 그것은 단지 여분의 일입니다.

11

소스 코드 https://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45에서 addClass을 사용할 때 클래스가 있는지 확인합니다.

는 그래서 무엇을 위해이 경우 .hasClass() .. (당신이 요소가 클래스를 가지고 있지 않은 경우 더 많은 작업을 수행하기를 원한다면 예외가 될 것이다 ..)

+3

안녕하세요. Thessaloniki와 +1 님, 안녕하세요. # # LX-Y 트릭에 대해 몰랐습니다. :) – Jon

+3

Hey Jon :) 마우스도 선택할 수 있습니다. (* 라인 번호를 클릭하고 Shift + 클릭 다른 모든 줄을 선택하려면 .. *) –

4

를 사용하는 이유가 없다 가치가 있지만 제한된 테스트에서 으로 성능 향상이 있습니다. .removeClass()은 Chrome에서 몇 배 느린 것으로보고 되더라도 1 초에 약 70,000 회의 작동을 제공합니다.

관련 문제