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

Bir if ifadesinde görünen div'u nasıl yakalarım?jQuery görülebilirse

$(this)<div class="chatmember"> olarak ayarlanmış - üstteki ikinci satır.

Aşağıda çalışıyorum ama şu ana kadar şansım vardı.

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

Üstü sadece dışarı düşer ...

ben de aşağıdaki denedim ve bu yöntemle herhangi bir detaylı bilgi için

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

"Newchatmessage" sınıfıyla div nerede? – Shef

+0

@Wesley haklı olabilirsiniz ... ama bu bir jQuery değişkeni olmayabilir, bu yüzden sanırım $ ('div.newchatmessage', $ (this)) ' –

+0

Oops yorumumu çok yakında sildi, Bu sözdizimini daha önce kullanmayı hatırlıyorum ama emin değilim. –

cevap

11

.is()

çalışmıyor ya gelmez Sadece biraz aşağı kaydırın ... bir sürü örnek var!

düzenlemek (ipucu @Wesley Murch için teşekkürler): Bu işe yaramazsa , senin seçici yanlış olabilir ... $(this+' a div.newchatmessage') oldukça tuhaf görünüyor ... oldukça $('a div.newchatmessage', this) veya $('a div.newchatmessage', $(this))this bir jQuery olmanın bağlı olabilir -Değişken veya olmasın

+0

üzgünüm - bunu if ifadesinde nasıl kullanırdım? – Adam

+0

Sanırım ".filter()' yerine '.is()' yi kullanmanız gerektiği anlamına gelir. – JJJ

+5

Kendi başına küçük bir örnek eklemek her zaman yararlıdır, bkz George yanıtı. –

48

Kullanım .is() bir elementtir böyle gibi belirli bir gereksinimi, doldurur olmadığını kontrol etmek: Eğer daha okunabilir istiyorsanız,

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

veya:

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

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

Benzer bir duruma rastladım ve birden fazla öğe döndüren jQuery selektörüne karşı dikkatli olmanız gerektiğini belirtmek istedim. .is (': görünür') kontrolünün sadece dizideki ilk elemanı değerlendireceğine inanıyorum. Bu seçici tarafından döndürülen tüm öğelerin böyle bir şeyle görünüp görünmediğini kontrol edebilirsiniz.

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