例如,我有一个<div class="first">
包含其他<div>
并选择第一个并将他推入变量
variable = $('div.first')
现在我想要这样的东西
$(variable + " > div")
我知道,这看起来很愚蠢但是如果我有一个数组包含表行并且我需要访问特定行内的列:
var tableRows = $('table > tbody > tr');
var tableBodyCols = $(tableRows[i]+'> td'); // Doesn't work :(
答案 0 :(得分:20)
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
将从第一行的零开始。