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

¿Cómo puedo capturar el div visible en una instrucción if?jQuery si está visible

Tengo $(this) establecido en <div class="chatmember"> - segunda línea desde la parte superior.

He estado trabajando con abajo, pero ahora tuve suerte hasta ahora.

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

Sobre simplemente se retira ...

También he probado a continuación y que tampoco funciona

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

¿Dónde está el div con la clase 'newchatmessage'? – Shef

+0

@Wesley, puede que tenga razón ... pero 'esto 'podría no ser una variable jQuery, así que supongo' $ (' a div.newchatmessage ', $ (this)) ' –

+0

Vaya, eliminó mi comentario demasiado pronto, parece recordar haber usado esa sintaxis antes, pero no estoy seguro. –

Respuesta

11

.is()

para cualquier información detallada sobre este método , simplemente desplácese un poco hacia abajo ... ¡hay un montón de ejemplos!

edición (gracias por la pista @Wesley Murch): si esto no funciona, el selector puede estar mal ... $(this+' a div.newchatmessage') parece bastante extraño ... que podría ser más bien $('a div.newchatmessage', this) o $('a div.newchatmessage', $(this)) dependiendo de this ser un jQuery -Variable o no

+0

lo siento, ¿cómo usaría eso en la declaración if? – Adam

+0

Creo que quiere decir que debes usar '.is()' en lugar de '.filter()'. – JJJ

+5

Agregar un pequeño ejemplo propio siempre es útil, vea la respuesta de George. –

48

uso .is() para comprobar si un elemento llena un cierto requisito, como por ejemplo:

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

o, si se quiere que sea más legible:

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

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

Me encontré con una situación similar y quería señalar que debe tener cuidado con el selector jquery que devuelve más de un elemento. Creo que la comprobación .is (': visible') solo evaluará el primer elemento de la matriz. Puede verificar si todos los elementos devueltos por ese selector son visibles con algo como esto.

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