2010-01-09 4 views
3

J'ai une table qui contient des lignes.Plus grand que le sélecteur dans jquery?

Voici un exemple de ma table avec beaucoup moins de lignes de table.

<table> 
<tr> 
    <td>bob</td> 
    <td class="CheckThis">0 </td> 
</tr> 
<tr> 
    <td>Jim</td> 
    <td class="CheckThis">3</td> 
</tr> 
</table> 

Maintenant, je veux regarder les secondes cellules de table et d'obtenir des lignes arrière qui ont une valeur plus alors 0.

Donc, dans mon exemple ci-dessus, il obtiendrait toute la ligne qui contient « 3 » puisqu'il est supérieur à zéro.

Je ne vois pas de secteurs qui font quelque chose de plus grand que jquery mais j'aurais pu le manquer.

merci

Répondre

5

Essayez ceci:

$("tr").filter(function() { 
    return parseInt($(this).children("td.CheckThis").text(), 10) > 0; 
}) 

Cela vous sélectionnez chaque élément de TR qui a un élément enfant TD avec la classe CheckThis que son contenu est supérieure à 0.

+0

Pourquoi .text ()? Je ne pense pas avoir déjà utilisé ce sélecteur auparavant. J'utilise habituellement val() ou html(). Quelle est la différence? Le texte est-il juste comme le texte réel et pas les étiquettes de HTML? – chobo2

+0

Le 'val()' fonctionne sur les éléments ** input ** uniquement: http://docs.jquery.com/Attributes/val Le 'html()' renvoie/définit html, pas le texte. Le 'text()' échappe au HTML. Vous n'avez pas besoin de 'html()' ici car il n'y a aucun moyen de contenu HTML. – BalusC

+0

@ chobo2: 'val' est pour les éléments d'entrée et' html' renvoie le contenu HTML (balisage) tandis que 'text' renvoie simplement le contenu du texte. S'il vous plaît jeter un oeil à la documentation de jQuery pour plus de détails: http://docs.jquery.com/ – Gumbo

0

Bien sûr, gt devrait le faire. Découvrez les docs au Selectors/gt

Editer: Oh, vous parlez de la valeur dans le HTML de l'élément? Vous devrez probablement configurer une boucle .each avec un filtre ou quelque chose. Je vais vérifier, désolé.

+0

Ceci permet de sélectionner par index , pas par le contenu. – BalusC

+0

Oui, juste remarqué. Je supprimerais mon post si c'était possible. – JAL

4

Vous pouvez utiliser la fonction filter() pour cela.

E.g.

var tds = $('td.CheckThis').filter(function() { 
    return parseInt($(this).text()) > 0; 
}); 

Mise à jour: la question après avoir relu une fois de plus, vous voulez vraiment sélectionner les éléments tr contenant les td « s en question et donc non seulement les td » s. Dans ce cas, veuillez vérifier Gumbo's answer pour un autre exemple de code qui fait ce droit.

+0

Il est toujours conseillé d'inclure la base de nombre pour parseInt pour éviter de passer accidentellement en mode octal: 'parseInt ($ (this) .text(), 10)' – slebetman

+0

Seulement si les nombres commencent par '0', ce que je ne voir dans son exemple. – BalusC

+0

Mais cela ne sélectionne pas les lignes. – Gumbo

0
var list = []; 
$("table").find("tr td:eq(1):not(:contains('0'))").each(function(i,val){ 
    list.push($(this).parent()); //add TR 
});