jquery:使用(“parent> child”)变量

时间:2013-04-02 12:26:37

标签: jquery

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

variable = $('div.first')

现在我想要这样的东西

$(variable + " > div")

我知道,这看起来很愚蠢但是如果我有一个数组包含表行并且我需要访问特定行内的列:

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

4 个答案:

答案 0 :(得分:20)

使用.children()

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

或上下文选择器:

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

两者都是等价的,但前者更容易阅读imho。

这是fiddle演示两者。


迭代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');
    //...
}

这是更新的fiddle

答案 1 :(得分:1)

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

但你可以尝试:

variable.children("div");

答案 2 :(得分:0)

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

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

如果您的td级别可能不止一个,请使用

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

或使用本机dom对象:

  var tableBodyCols = tableRows[i].cells;

答案 3 :(得分:0)

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

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

如果您只想使用特定i

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

其中i将从第一行的零开始。