Duplication possible:
Comment faire pour iterer des lignes de table avec JQuery et accéder à certaines valeurs de cellule?
J'ai quelque chose comme:
<table id="tblOne"> <tbody> <tr> <td> <table id="tblTwo"> <tbody> <tr> <td> Items </td> </tr> <tr> <td> Prod </td> </tr> </tbody> </table> </td> </tr> <tr> <td> Item 1 </td> </tr> <tr> <td> Item 2 </td> </tr> </tbody> </table>
J'ai écrit jQuery pour faire bouger chaque tr comme:
$('#tblOne tr').each(function() {...code...});
Mais le problème est que ça fait bouger le "tr" de "tblTwo" aussi que je ne veux pas. Quelqu'un peut-il suggérer quelque chose pour résoudre ce problème?
JQuery vient d'utiliser
$('#tblOne > tbody > tr').each(function() {...code...});
En utilisant le sélecteur direct des enfants ( >
), vous traverserez les descendants immédiats (et pas tous les descendants)
Dans VanillaJS, vous pouvez utiliser document.querySelectorAll()
et marcher sur les lignes en utilisant forEach()
[].forEach.call(document.querySelectorAll('#tblOne > tbody > tr'), function(tr) { /* console.log(tr); */ });
Juste une recommandation:
Je recommanderais l'utilisation de la mise en œuvre de la table DOM, c'est très simple et facile à utiliser, vous n'avez vraiment pas besoin de jQuery pour cette tâche.
var table = document.getElementById('tblOne'); var rowLength = table.rows.length; for(var i=0; i<rowLength; i+=1){ var row = table.rows[i]; //your code goes here, looping over every row. //cells are accessed as easy var cellLength = row.cells.length; for(var y=0; y<cellLength; y+=1){ var cell = row.cells[y]; //do something with every cell here } }
Utiliser un sélecteur d'enfants immédiat >
:
$('#tblOne > tbody > tr')
Description: Sélectionne tous les éléments enfants directs spécifiés par "enfant" des éléments spécifiés par "parent".