jquery在tr中选择每个td

gh9*_*gh9 43 javascript jquery

我需要一种方法来与a中的每个td元素进行交互tr.

详细说明,我想访问第一个表行,然后是第一列,然后是第二列,等等.然后移动到第二行并重复该过程.

就像是:

伪代码:

for each row in table
{
  for each column in row
  {
    do cool things
  }
}
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$('#tblNewAttendees tr').each(function() {
  alert('tr');
  //Cool jquery magic that lets me iterate over all the td only in this row
  $(magicSelector).each(function(){
    alert('hi');
  });

});
Run Code Online (Sandbox Code Playgroud)

HTML:

<table>
     <thead>
          <th>someHeader</th>
     </thead>
     <tbody>
          <tr>
               <td>want to grab this first</td>
               <td> this second </td>
          </tr>
          <tr>
               <td>this third</td>
               <td>this fourth</td>
          </tr>
     </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

Gre*_*egg 105

您可以在TR循环中简单地执行以下操作:

$(this).find('td').each (function() {
  // do your cool stuff
});                          
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用children()而不是find()来确保只搜索tr下面的一个DOM级别.find()将搜索下面的每个级别,所以如果td有复杂的内容(例如另一个带有单元格的表,恐怖!)那么children()是一个更安全(和更快)的赌注. (25认同)

use*_*716 26

您根本不需要jQuery选择器.您已经通过cells属性引用了每行中的单元格.

$('#tblNewAttendees tr').each(function() {

    $.each(this.cells, function(){
        alert('hi');
    });

});
Run Code Online (Sandbox Code Playgroud)

利用已有的集合比通过DOM选择创建新集合更有效.

在这里,我使用了jQuery.each()(docs)方法,它只是迭代和枚举的通用方法.


Roc*_*mat 11

$(magicSelector)可以$('td', this).这将抓住所有td孩子this,在你的情况下是每个孩子tr.这和做的一样$(this).find('td').

$('td', this).each(function() {
// Logic
});
Run Code Online (Sandbox Code Playgroud)

  • 如何调用迭代元素(td)? (2认同)

Pou*_*oul 6

扩展'each'函数上方的答案将返回table-cell html对象.在$()中包装然后允许你对它执行jquery操作.

$(this).find('td').each (function( column, td) {
  $(td).blah
});  
Run Code Online (Sandbox Code Playgroud)