2009-06-19 6 views
2

J'ai une table qui a des lignes comme ceci:Recherche de texte dans un tableau avec jQuery

<tr id="" class="objectRow"> 
    <td class="bulkSelector"><input id="" type="checkbox" value=""/></td> 
    <td class="favorite"></td> 
    <td class="name"><a id="" class="" href="">Ut Urna Nisl</a></td> 
    <td class="description"><p>Nam feugiat tincidunt massa nec venenatis. Mauris egestas consectetur magna</p></td> 
    <td class="modifiedDate"><p>5/20/2009</p></td> 
</tr> 

Je veux créer un jQuery enveloppé ensemble de tous les éléments de texte que je peux alors envoyer à la fonction qui tronquer eux s'ils ne rentre pas dans leurs cellules.

Je n'arrive pas à comprendre comment obtenir l'ensemble emballé.

tentais, mais il ne fonctionne pas:

var textNodes = $('#resultsTable .objectRow') 
.contents() 
.filter(function(){ return this.nodeType == 3; }) 
.filter(function(){return this.nodeValue != null}); 

Répondre

2

fonction de jQuery text retourne le contenu du texte combiné de l'élément, de sorte que vous n'avez pas à vous soucier de NodeTypes et autres. Ainsi, vous pouvez alors filtrez simplement tous les éléments dont le contenu texte est vide:

$('tr.objectRow', '#resultsTable').find('td').filter(function() { 
    return $.trim($(this).text()) != ''; 
}); 

Cela va finir par vous donner toutes les <td> s dans la ligne qui ont tout texte, et vous pouvez faire ce que vous voulez faire en obtenant à nouveau la valeur text() de la cellule de tableau.

En ce qui concerne votre commentaire, cela devrait le faire:

$('tr.objectRow', '#resultsTable').find('*').contents().filter(function() { 
    return $.trim($(this).text()) != ''; 
}); 
+0

Merci. Je n'ai pas posé la bonne question. L'ensemble dont j'ai besoin est les éléments qui contiennent du texte. Dans mon exemple, cela consisterait en un a et 2 p nœuds. –

Questions connexes