2010-11-01 5 views
6

Bazı seçicilerle oynuyorum ve bir hücre içinde Metin seçerek duvara çarpıyorum.jquery içindeki metni bul <td>

İşte yaptığım basit bir girişim. dize "* gerekli" bulunursa -

<table> 
<tr> 
    <td>First Name</td> 
    <td>*required</td> 
    </tr> 
</table> 

ben "kırmızı" olmak o hücre için sınıfını değiştirmek istiyorum.

İşte jquery benim denemesi:

$("td:contains('*required')").addClass("red"); 

Tüm hücreler bu sınıfı uygulamak için sebep oluyor, öyle görünüyor. Belirli bir metni aramanın daha iyi bir yolu var mı?

+0

Beklendiği gibi çalıştığını görebiliyorum. http://jsfiddle.net/nY29Q/ –

+0

Bu benim için çalışıyor. Kullanmakta olduğunuz kodu http://jsfiddle.net adresine bağlayabilir misiniz? – lonesomeday

cevap

23

Sorunsuz, you can test it here, tam bir eşleşme bunu yapmak, herhangi ebeveyn<td>da olsa o metni içeren akılda tutmak zorunda Ne:

$("td").filter(function() { return $.text([this]) == '*required'; }) 
     .addClass("red"); 

You can test it here.

+0

+1 onu bana vurdu! – Stephen

+0

Bu ilginç bir site. Yer işareti koymam gerekebilir! Kullanmakta olduğum kod, basit bir siteye yerleştirdiğimde çalışıyor, bu da bana karşı çalışan başka bir şey olmalı. biraz daha araştırmalıyım. – coffeemonitor

+0

$ .text() 'işlevine aşina değilim - bir yerde belgelenmiş mi? – lonesomeday

5

Her zaman yalnızca $.filter() kullanın, burada yalnızca geri aramanın true değerini döndüren öğeler, seçime dahil edilir. Ayrıca

$('td').filter(function(i) { 
    $(this).html().indexOf('*required') >= 0; 
}); 

: Örneğin: - ve aynı zamanda çünkü Nick'in cevap, verimlilik için size seçici ile daha spesifik olmak isteyeceksiniz. Verimliliği düşündüğünüz halde, ilk etapta geri arama kullanan bir yöntem kullanmamanız daha iyidir.

Seçiciler gittikçe, $('#tableID > tr > td')... veya benzeri bir şeyi kullanmayı düşünün.

-2

Bunu yapmak için JavaScript kullanmamalısınız. Kullanmanız gereken, bir CSS sınıfı:

+0

Sanırım nokta, hücrenin başlaması gereken bir sınıfa sahip olmaması. –

+0

Tam olarak konu budur. teşekkürler Craver. – coffeemonitor

+0

İşaretleme üzerinde kontrolünüz yok mu? JavaScript’i yazacak, ancak CSS’yi uygun şekilde kullanamayacak konumda nasıl olursunuz? Seçicilerle bir öğrenme alıştırması mı deniyorsunuz? – SnickersAreMyFave