jQuery - Object + nth-child

时间:2013-09-11 06:18:43

标签: javascript jquery html-table

尝试使用first-child或nth-child连续获取第一个单元格,但语法不是很好。这就是我正在尝试的,它无法正常工作:

....
sections[key][2][sections[key][2].length-1] //Table Row
$(sections[key][2][sections[key][2].length-1]+":first-child") //Should be first cell of row
....

相反,它返回整个文档......

3 个答案:

答案 0 :(得分:1)

你的选择器:

$(sections[key][2][sections[key][2].length-1]+":first-child")

正在尝试将JavaScript对象与字符串连接起来,这将导致(类似的)[object HTMLTableRowElement]:first-child,显然,它不会产生jQuery对象或DOM节点。

鉴于(你说)$(sections[key][2][sections[key][2].length-1]tr元素(虽然为什么你在jQuery选择器中使用这种表示法对我来说是一个谜),我建议:

$(sections[key][2][sections[key][2].length-1]).find('td:first-child');

JS Fiddle demo

请注意td:first-child伪类的使用,以防止选择所有后续元素的第一个子元素。

但是,为了得到所有表行的第一个单元格(使用jQuery更容易理解的表示法),我建议:

$('table tr td:first-child')

JS Fiddle demo

或者,使用:nth-child()获取任意编号的td

$('table tr td:nth-child(2)')

JS Fiddle demo

答案 1 :(得分:0)

如果您只是想要归还第一个孩子,为什么不这样做:

sections[key][2][sections[key][2].length-1].firstChild 

请记住,通过jQuery选择通过DOM可以轻松获得的内容只会减慢代码的速度。

答案 2 :(得分:0)

应该是:

$(sections[key][2][sections[key][2].length-1]+" td:first-child")