如何在jQuery中选择$(this)下的某些对象?

时间:2011-11-26 21:53:38

标签: jquery datatables

我正在努力学习如何遍历jQuery dataTable中的行,而不是做得非常好。

我的表格ID是“partslist”。所以:

    $("#partslist tr").each(function() {
        $($(this) + " td").each(function() {
            alert($(this).text());
        })
    })

你可以看到:

$($(this)+“td”)。每个......

是一个很大的脂肪失败。我想循环遍历每一行中的列。有趣的是,有了dataTables网站上的所有这些例子,我找不到一个可以让我轻松从表中获取数据的例子。

4 个答案:

答案 0 :(得分:2)

你可以这样做:

$("#partslist tr").each(function() {
        $(this).find("td").each(function() {
            alert($(this).text());
        })
    })

找到选择tr的所有td

或者

$("#partslist tr").each(function() {
        $("td",$(this)).each(function() {
            alert($(this).text());
        })
    })

使用tr的选择作为范围或“上下文”

来查找所有td

这两者都完成了同样的事情。

答案 1 :(得分:1)

$("#partslist tr").each(function() {
    $("td", this).each(function() {
        alert($(this).text());
    })
});

答案 2 :(得分:1)

在jQuery DataTables中操作数据的另一个地方是fnRowCallback。这是一个初始化参数,它提供了获取数据并逐行提供更新的理想位置。此外,由于内部渲染功能已经在创建和缓存某些对象,因此效率更高。

当然有理由要求数据在呈现后显示,但您的问题并不表示您的用例。这是在节点附加到DOM之前操作行的示例。

这是一个假的例子。想象一下,在我的数据被返回(一个2D对象,所以我通过索引而不是按名称访问它)时,我的第二列包含一个表示零件状况的字符串。为简单起见,有两种选择:新建或再制造。我实际上是在传递一个短格式字符串,所以我想在显示之前将其转换为完整的单词:

var oTable = $('#partslist').dataTable({
// ...other initialization parameters can go in here, too...
  fnRowCallback: function(nRow, aData) {
    var condition = aData[1]; // second column of the data object if it's a 2D object
    var conditionFull = "New"; // by default, parts are in new condition
    if (condition == "reman") {
      conditionFull = "Remanufactured";
    }
    $('td:eq(1)', nRow).text(conditionFull); // use jQuery to select the second VISIBLE (HTML) column and update the text     
  }
});

答案 3 :(得分:0)

您可以$(this).children('td').each...$(this + ' td').each...。我认为任何一个都可以工作,但我也没有测试。