2011-08-18 31 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 
}