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

如何捕獲if語句中的可見div?jQuery if visible

我有$(this)設置爲<div class="chatmember"> - 從頂部的第二行。

我一直在下面工作,但現在運氣到目前爲止。

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

以上只是滴出...

我也試過以下,並沒有對這種方法的任何詳細資料工作,要麼

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

那裏的div與類newchatmessage? – Shef

+0

@Wesley你可能是對的......但'this'可能不是一個jQuery變量,所以我想'$('一個div.newchatmessage',$(this))' –

+0

Oops刪除我的評論太快了,我似乎記得之前使用過這種語法,但我不確定。 –

回答

11

.is()

,向下滾動一下...有一堆例子!

編輯(感謝提示@Wesley默奇): 如果不工作,你的選擇可能是錯誤的... $(this+' a div.newchatmessage')看起來很奇怪......它可能寧可取決於this是一個jQuery $('a div.newchatmessage', this)$('a div.newchatmessage', $(this)) -variable或不

+0

對不起 - 我如何在if語句中使用它? – Adam

+0

我想他意味着你應該使用'.is()'而不是'.filter()'。 – JJJ

+5

添加自己的小例子總是有幫助的,請參閱George的答案。 –

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')檢查將只評估數組中的第一個元素。您可以檢查該選擇器返回的所有元素是否可以看到類似這樣的內容。

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