jQuery表行中的每个循环

ANP*_*ANP 72 javascript each jquery html-table tablerow

可能重复:
如何使用JQuery迭代表行并访问某些单元格值?

我有类似的东西:

<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>
Run Code Online (Sandbox Code Playgroud)

我编写了jQuery循环遍历每个tr,如:

$('#tblOne tr').each(function() {...code...});
Run Code Online (Sandbox Code Playgroud)

但问题是它通过"tblTwo"的"tr"循环也是我不想要的.有人可以建议解决这个问题吗?

fca*_*ran 199

在jQuery中使用

$('#tblOne > tbody  > tr').each(function() {...code...});
Run Code Online (Sandbox Code Playgroud)

使用直接子选择器(>),您将走过直接后代(而不是所有后代)


VanillaJS中,您可以使用document.querySelectorAll()并遍历行forEach()

$('table > tbody  > tr').each(function(index, tr) { 
   console.log(index);
   console.log(tr);
});
Run Code Online (Sandbox Code Playgroud)

  • @Raynos请解释而不是"肇事逃逸"...... (14认同)
  • 如何在函数中引用tr元素? (4认同)
  • @Rubiksmomo - 使用函数(索引,元素) - https://api.jquery.com/each/ (2认同)

GNi*_*i33 59

只是一个建议:

我建议使用DOM表实现,它非常简单易用,你真的不需要jQuery来完成这项任务.

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
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我同意jQuery通常不是真正需要这种任务(特别是在使用`.querySelectorAll()`的新浏览器上)但如果你已经包含了jQuery,那就不浪费它了(和DOM解决方案有两个`for) `循环不是那么简单,imho) (14认同)

Sar*_*raz 19

使用直接子选择器 >:

$('#tblOne > tbody  > tr')
Run Code Online (Sandbox Code Playgroud)

描述:选择由"parent"指定的元素"child"指定的所有直接子元素.