2010-11-18 2 views
0

과 함께 작동하는 경우이 매우 이상한 시나리오가 발생했습니다. 만이 의지

if ($('#content h1').hasClass('active')) { 
    $(this).hide(); 
} 

:

if ($('#content h1').hasClass('active')) { 
    $('#content h1').hide(); 
} 

왜 내가 (이)를 사용할 수 없습니다 이것은 H1을 숨길 수 없습니다 ? 스크립트에 문제가 있습니까?

답변

3

올바른 동작입니다. ifthis의 문맥에서는 h1 요소가 아니라 document 요소 (또는 함수가있는 경우 함수)에 대한 참조가 들어 있습니다. 당신이 할 수있는

+0

^'$ (this)':-) – fearofawhackplanet

0

:이 경우

$('#content h1').foreach(function() { 
    if (!$(this).hasClass('active')) { 
     $(this).hide(); 
    } 
}); 

월이 설명 된 바와 같이, 이것은 당신이 (제목 요소)가 될 것으로 예상되는 상황에있을 것입니다. 당신이 원하는 무엇

0

은 "이", 위에서 언급 한 바와 같이, 개체를 참조하지 않습니다 아마

var h1 = $('#content h1') 
if (h1).hasClass('active')) { 
    h1.hide(); 
} 

입니다.

+0

더 간단하고 더 좋은 것은 더 $ ('# content h1.active')입니다. – Sam

0

$('#content h1').hasClass('active')$(this)을 사용하려는 jQuery 객체와 달리 부울 값 (true 또는 false)을 반환합니다. hasClasshere의 사용법을 참조하십시오. 이것은 포함 "내용"의 id 속성을 가진 모든 요소를 ​​발견

$("#content h1.active").hide(); 

: 당신이 특정 셀렉터에 일치하는 모든 요소에 대한 작업을 수행하려는 경우

, 대신 시도이 셀렉터를 제공 class 속성이 "active"인 h1 요소를 모두 숨 깁니다.

관련 문제