jquery – récupère des éléments dans les colonnes spécifiées d’un tableau html

En utilisant jQuery, je voudrais obtenir tous les éléments dans les colonnes spécifiées d’un tableau HTML. Veuillez noter qu’il peut y avoir plus d’une colonne

Par exemple, si j’ai le tableau html suivant:

a b c
1 2 3

qui ressemble à ce qui suit:

 1 2 3 abc 

Je voudrais avoir 1, 3, a, c

Comment devrais-je le faire? Quel serait le moyen le plus efficace de le faire? (Je traverse une énorme table générée par un utilitaire de génération de rapports)

Voici un exemple plus ou moins générique vous permettant de définir les index souhaités sous forme de tableau:

 var cellIndexMapping = { 0: true, 2: true }; var data = []; $("#MyTable tr").each(function(rowIndex) { $(this).find("td").each(function(cellIndex) { if (cellIndexMapping[cellIndex]) data.push($(this).text()); }); }); $("#Console").html(data.join("
"));

Cas de test: http://jsfiddle.net/yahavbr/FuDh2/

Utiliser un tableau associatif pour obtenir des performances plus rapides, pour autant que je sache, la recherche d’un élément spécifique dans un tel tableau devrait déjà être optimisé.

Notez que dans JS, le premier indice est toujours égal à 0, ainsi, les 1 er et 3 e cellules désignent les indices 0 et 2.

Vous pouvez utiliser le sélecteur :nth-child() .

 $("tr td:nth-child(1), tr td:nth-child(3)").css('color', 'red'); 
 var table = $("table"); // Make this more accurate if there are multiple tables on the page var rows = table.find("tr"); // Will find too much if there are  tags nested in each other for (var i=0; i=rows.length; ++i) { var cells = rows.eq(i).find("td"); var values = [cells.eq(0).text(), cells.eq(2).text()]; } 

Vous pouvez le faire avec un sélecteur utilisant nth-child. Ce qui suit est un autre moyen.

 $("TABLE").find("tr").each(function(){ var tr = this; $([0,2]).each(function(){ alert($(tr[this]).html()); }); }); 

Pour le 1er et le 3ème, vous devrez spécifier 0, 2

tu peux faire comme ça

 var retorno=[]; linha=$("td:nth-child(1), td:nth-child(3)").clone().each(function(){retorno.push($(this).text())}); $.each(retorno,function(index, item) {$('#Console').append(item+', ');}); 

Cloner à une utilisation pour ne pas modifier la table, si vous supprimez la modification après cette ligne. 2 éléments placés dans le tableau 3 à utiliser chacun pour imprimer à l’intérieur de l’élément Console

vous pouvez faire aussi comme ça. avec une ligne:

 $("td:nth-child(1), td:nth-child(3)").clone().map(function(){ return $(this).text()}).get().join(','); 

map – créer un tableau avec des colonnes de retour get – obtenir le tableau rejoindre – chang tableau en ligne separete avec virgule

1,3, a, c

c’est le mieux que je puisse faire.