jQuery each loop in table row [duplicar]


Posible Duplicado:
¿Cómo iterar filas de tabla con jQuery y acceder a algunos valores de celda?

Estoy teniendo algo como:

<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>

He escrito jQuery para recorrer cada tr como:

$('#tblOne tr').each(function() {...code...});

Pero el problema es que gira a través de la "tr" de "tblTwo" también que no quiero. ¿Alguien puede sugerir algo para resolver esto?

Author: Brian Tompsett - 汤莱恩, 2012-05-03

3 answers

En jQuery simplemente use

$('#tblOne > tbody  > tr').each(function() {...code...});

Usando el selector directo de hijos (>) caminarás sobre descendientes inmediatos (y no todos descendientes)


En VanillaJS puedes usar document.querySelectorAll() y caminar sobre las filas usando forEach()

[].forEach.call(document.querySelectorAll('#tblOne > tbody  > tr'), function(tr) {
    /* console.log(tr); */
});
 158
Author: fcalderan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-13 12:29:05

Solo una recomendación:

Recomiendo usar la implementación de la tabla DOM, es muy sencilla y fácil de usar, realmente no necesita jQuery para esta tarea.

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
  }
}
 51
Author: GNi33,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-20 20:22:24

Use selector secundario inmediato >:

$('#tblOne > tbody  > tr')

Descripción: Selecciona todos los elementos secundarios directos especificados por "hijo" de elementos especificados por "padre".

 18
Author: Sarfraz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-03 13:07:02