2009-12-11 3 views
2

Disons que j'ai plusieurs tables (pas d'ID ou de nom) sur une page à différents niveaux dans des divs intégrés. Que serait mon sélecteur (si possible) pour sélectionner toutes les tables indépendamment de l'endroit où il réside sur une page et itérer ou filtrer les tables en fonction du contenu de la première cellule de la première rangée?Sélecteur - Sélection de toutes les tables d'une page dans jQuery

+6

http://docs.jquery.com/ –

+4

Ne commencez pas simplement à utiliser une bibliothèque. Lisez d'abord la documentation. DUH! –

Répondre

10

Vous pouvez simplement utiliser $('table') comme sélecteur.

Ensuite, vous pouvez utiliser les filtres existants tels que ":contains" ou ":has", ou la fonction .filter() si vous avez besoin d'un contrôle plus précis pour filtrer vos résultats. Par exemple,

$('table:has(td > span)') 

ou

$('table').filter(function(index){ 
    return $(this).html() == "<tr><td>something</td></tr>"; 
}); 
2

Pour sélectionner toutes les tables ne pouvait pas être plus simple:

$("table") 

Ajout d'un filtre

$("table:has(td:first:contains('mytext'))") 
2

Cela sélectionnera toutes les tables:

$("table") 

Cela permet de sélectionner la première cellule de TD de la première ligne de chaque table:

$("table tr:first td:first") 
0

Si vous êtes désireux de regarder la première cellule de la première ligne de chaque table, vous pouvez utiliser:

$("table tr:first td:first").each(function() { var html = this.innerHTML; /* Iterative logic here */ });

2

Vous pouvez obtenir toutes les tables en utilisant simplement jQuery('table'). Si les tables sont dans différents niveaux ou intégrées dans des divs ou tout ce qui ne change pas.

Pour faire un filtrage supplémentaire:

jQuery('table').filter(function() { ... }); 

Le passé en fonction tracera l'élément de table à this, et vous devrez retourner vrai pour le garder dans votre collection, ou false pour le jeter.

+0

Je tapais presque la même chose –

+0

vous pouvez utiliser $ (this) .find ("td: first") pour obtenir la première table, puis effectuer un filtrage logique (retourner vrai ou faux) –

3

Essayez ...

$("table").each(function(){ 
    var curTable = $(this); 
    var cell = $(this).find("tr:first td:first"); 

    if ($(cell).text() == "some text"){ 
    } 
}); 

Sinon, vous pouvez tout vérifier le code HTML de la première cellule de la clause if par $ (cellulaire) .html()

0

Vous devriez essayer quelque chose comme $('table tr:first td:first:containts("whatever")') à saisir la première cellule de la première rangée avec un contenu spécifique.

1
$('table').each(function(){ 
    $(this).find('tr :first')... 
}); 
Questions connexes