2010-11-05 18 views
17
Şu anda sayfaya HTML belirli bir süreliğine sınıfı almak için bu kullanıyorum

: Burada current_status status_billedjQuery: Yalnızca bir dizeyi içeren bir sınıf mı seçin?

Benim nihai hedef sınıfını kapmak için geçerli:

$(this).parent("div").attr('class') 

Ama bu div birden sınıfları vardır Bu status_ ile başlar ve farklı bir sınıf adıyla değiştirin.

Yani yukarıda benim .parent() işlevini kullanarak, İhtiyacım div seçmek mümkün, ama ben o zaman status_billed sınıfını kaldırıp örneğin, status_completed (veya başka sınıf adlarının bir numarayı), ile değiştirmek gerekir. status_billed sınıf var

cevap

41

Seç div s: kimin class nitelik status_ içeren

$(this).parent('div.status_billed') 

Seç div s:

Eğer jQuery selectors ile alırsınız en iyi hakkında
$(this).parent('div[class*=status_]') 

.

$(this).parent('div').filter(function() 
{ 
    var classes = $(this).attr('class').split(' '); 
    for (var i=0; i<classes.length; i++) 
    { 
     if (classes[i].slice(0,7) === 'status_') 
     { 
      return true; 
     } 
    } 
    return false; 
}); 

... ama bütün bunları neden yaptığını emin değilim - en fazla 1 ayağında .parent() döner: Sen .filter() kullanarak daha iyisini yapabiliriz. .closest() veya .parents() mu demek istediniz?

+1

Ah bu iyi bir çağrı, teşekkürler. Gönderiyi yeni sildim, böylece o rotaya gitmek için zaman kaybetmiyor. – McStretch

+0

@McStretch: Gördüm. :) –

+0

Ayrıca geri dönüş sınıflarını da kullanabilirsiniz [i]; geri dönüş yerine; gerçek status_xxxx değerini döndürmek için. –

İlgili konular