2011-08-18 3 views
14
<div id="chatCenterMembers"> 
    <div class="chatmember"> 
     <a title="Blah Blah Blah"> 
      <div class="newchatmessage" style="display: block;"></div> 

if 문에서 보이는 div를 어떻게 캡처 할 수 있습니까?jQuery (보이는 경우)

나는 으로 두번째 줄을 $(this)으로 설정했습니다.

나는 아래에서 일했지만 지금까지는 운이 좋았습니다.

if($(this+' a div.newchatmessage').filter(":visible")) { 

위가 그냥 떨어 ...

은 또한 아래 시도하고는이 방법에 어떤 자세한 내용

if ($(this + 'a div.newchatmessage').is(':visible')) { 
+0

여기서 클래스는 'newchatmessage' 클래스입니까? – Shef

+0

@Wesley 맞을지도 모르지만 ... '이'는 jQuery 변수가 아니기 때문에 $ ('div.newchatmessage', $ (this)) '라고 가정합니다. –

+0

Oops가 내 의견을 너무 빨리 삭제했습니다. 그 구문을 사용하기 전에 기억하는 것 같지만 확실하지 않습니다. –

답변

11

.is()

를 작동하거나하지 않습니다 , 조금 아래로 스크롤하십시오 ... 예제가 잔뜩 있습니다!

편집 (힌트 @Wesley Murch에 대한 감사) :이 작동하지 않는 경우 , 당신의 선택이 잘못 될 수도 ... $(this+' a div.newchatmessage') 아주 이상한 모습 ... 오히려 $('a div.newchatmessage', this) 또는 $('a div.newchatmessage', $(this))this가 jQuery를 인에 따라 수 있습니다 -variable 여부

+0

죄송합니다 - if 문에서 어떻게 사용합니까? – Adam

+0

나는 그가 .filter() 대신에 .is()를 사용해야한다는 것을 의미한다고 생각한다. – JJJ

+5

자신의 작은 예제를 추가하면 항상 도움이됩니다, 조지 대답을 참조하십시오. –

48

사용 .is() 요소는 같은 특정 요구 사항 채우고 있는지 확인하려면 : 당신이 더 읽기 원한다면,

if ($(this).find('a div.newchatmessage').is(':visible')) 

을 또는 :

var element = $(this).find('a div.newchatmessage'); 

if (element.is(':visible')) { 
    // Do your thing 
} 
0

비슷한 상황이 발생하여 두 개 이상의 요소를 반환하는 jquery 선택기를주의해야합니다. .is (': visible') 검사는 배열의 첫 번째 요소 만 평가합니다. 해당 selector에 의해 반환 된 모든 요소가 다음과 같이 표시되는지 확인할 수 있습니다.

if($('.someElementWithThisClass:visible').length > 0){ 
    //Do it to it 
} 
관련 문제