17

例如,我有一个<div class="first">包含其他<div>的并选择了第一个并将他推入变量

variable = $('div.first')

现在我想要这样的东西

$(variable + " > div")

我知道,这似乎很愚蠢,但是如果我有一个包含表行的数组并且我需要访问特定行中的列怎么办:

var tableRows = $('table > tbody > tr');
var tableBodyCols = $(tableRows[i]+'> td'); // Doesn't work :(
4

4 回答 4

25

采用.children()

var tableBodyCols = tableRows.children('td');

或上下文选择器:

var tableBodyCols = $('> td', tableRows);

两者都是等价的,但前者更容易阅读恕我直言。

这是一个展示两者的小提琴。


并遍历each表行的所有子集:

tableRows.each(function() {
    var tableBodyCols = $(this).children('td');
    //...
});

但是,如果您真的更喜欢for循环或者您需要获取特定行的列,那么eq就是您的朋友。

for (var i = 0; i < tableRows.length; i++) {
    var tableBodyCols = tableRows.eq(i).children('td');
    //...
}

这是更新的小提琴

于 2013-04-02T12:27:33.220 回答
2

你不能这样做$(variable + " > div"),因为variable不是字符串而是 jquery 元素。

但你可以尝试:

variable.children("div");
于 2013-04-02T12:29:41.780 回答
0

要获取索引行的单元格i,您可以使用

  var tableBodyCols = $('td', tableRows[i]);

如果您真的可能有多个级别td,请使用

  var tableBodyCols = tableRows.eq(i).children('td');

或使用本机 dom 对象:

  var tableBodyCols = tableRows[i].cells;
于 2013-04-02T12:28:37.920 回答
0

如果您想要所有 <td>单元格,请使用:

var tableBodyCols = tableRows.children('td');

如果您只想要特定行的那些i

var tableBodyCols = tableRows.eq(i).children('td');

第一行i从零开始。

于 2013-04-02T12:29:18.867 回答