如何使用jQuery获取表中行的每个id?

时间:2015-03-03 10:51:13

标签: javascript jquery

为什么这会在每次迭代时给出第一个id?或者更好的是,我如何获得每个id?

$('#foo').on('click', function () {
    var rows = $('#mytable tbody tr.selected');
    for (var i = 0; rows[i]; i++) {
        console.log('rows.attr("id")' + rows.attr('id'));
    }
});

这次打印“17”两次,选择2行时。我可以看到第二行是“18”,所以出了点问题。

4 个答案:

答案 0 :(得分:4)

我建议您使用.each()

  

在当前DOM元素的上下文中触发回调,因此关键字this引用该元素。

var rows = $('#mytable tbody tr.selected');
rows.each(function(){
    console.log(this.id); //Here this refers current row
})

OR

var rows = $('#mytable tbody tr.selected');
//Here you need to add break condition
for (var i = 0; i < rows.length; i++) {
    console.log('rows.attr("id")' + rows[i].id); //access row using index
}

答案 1 :(得分:4)

您可以使用jquery map并获取数组中的值:

$('#foo').on('click', function() {
  var rows = $('#mytable tbody tr.selected');

  var ids = rows.map(function() {
    return this.id;
  }).get();

  console.log(ids);//outputs ['row1', 'row2', 'row3']
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="mytable">
  <tr id="row1" class="selected">
    <td></td>
  </tr>
  <tr id="row2" class="selected">
    <td></td>
  </tr>
  <tr id="row3" class="selected">
    <td></td>
  </tr>
</table>

<input type="button" id="foo" value="Get all row id" />

<强>参考文献:

.map()

.get()

答案 2 :(得分:2)

希望这项工作!

$('#foo').on('click', function () {
    var rows = $('#mytable tbody tr.selected');
    for (var i = 0; rows.length; i++) {
        console.log('rows.attr("id")' + rows[i].id);
    }
});

答案 3 :(得分:2)

给定选择器(此处为#mytable tbody tr.selected)的jQuery实例可以在您执行时立即引用。但是,这有一个有趣的效果,即回引内部指针当前引用的集合中的元素(对于大多数情况,这被认为是第一个元素。Reference here。)。

为避免这种情况,请考虑按如下方式修改代码:

  • 将jQuery对象用作数组:

    $('#foo').on('click', function () {
      var rows = $('#mytable tbody tr.selected');
      for (var i = 0; i<rows.length; i++) {
        console.log('rows.attr("id")' + rows[i].attr('id'));
      }
    });
    
  • 使用jQuery.forEach进行迭代:

        $('#foo').on('click', function () {
          var rows = $('#mytable tbody tr.selected');
          rows.forEach(function() {
            console.log($(this).attr("id"));
          });
        });