2012-01-04 59 views
1

,我需要选择其中满足以下条件的每个表行的第一个TD:第一个表的每一行W的/选择第一个TD的jQuery

  1. TD没有合并单元格
  2. TD在第一个表,而不是任何嵌套的人

下,我不工作的...

$("table:first > td:first-child").not("[colspan]").css("background-color","red"); 
+0

你能张贴在[的jsfiddle]为例(http://jsfiddle.net/)? – 2012-01-04 17:50:33

+0

*“同样父母>子选择器被取消......”*不,它不是。只有在不使用左侧操作数的情况下才会使用它。 '>'是一个有效的CSS选择器,所以不推荐使用它。但是,只有一个操作数才能使用它,这不是有效的CSS,所以不赞成使用这种特定的行为。 – 2012-01-04 18:25:52

+0

@am不是我 - 你说得对。它是$(“> elem”,上下文)已被弃用。 – santa 2012-01-04 18:27:46

回答

1

要限制为外表的td,可以使用多个子选择器深入到特定级别。

$("table:first > tbody > tr > td:first-child").not("[colspan]") 

请注意,我包括tbody。你应该明确地将它包含在你的表中,因为大多数浏览器(但不一定全部)会在缺失时注入它。


如果您有应包括theadtfoot元素,使用*代替tbody

$("table:first > * > tr > td:first-child").not("[colspan]") 
+0

谢谢。我希望找出一个解决方案,没有父>子选择器,因为它已被弃用... – santa 2012-01-04 18:12:51

+2

@santa:不,不推荐使用'parent> child'选择器。不使用左手操作数的情况下不推荐使用,如:'> child,context'或$(context).find('> child')'。 – 2012-01-04 18:18:00

1

TD可能不是TABLE反正的直系后裔(应该有之间的TR),所以只是删除>在格兰选择:

$('table:first td:first-child:not([colspan])'); 

而且,我认为它只是> child选择使用已过时(当在选择器中没有父母时)。 parent > child应该是完全有效的:

注:$( “> ELEM”,上下文)选择将在未来 版本中将会弃用。因此不鼓励使用它的替代 选择器。

+0

+1击败了我。 – 2012-01-04 17:51:41

+1

我喜欢这种解决方案的简单性!但它仍然选择嵌套表的第一列... – santa 2012-01-04 17:51:53

+0

@santa对,我误解了你的问题。我想你可能需要深入研究,我会看看我能否想出一个简单的解决方案。 – David 2012-01-04 18:08:42

0
/* This piece of code selects every first TD element without colspan 
* in EVERY NOT nested TABLE 
*/ 

// Select all without colspan 
$('table td:first-child:not([colspan])').filter(
    // filter out those having more than 1 parent table 
    function() { 
     return $(this).parents('table').length == 1 
    }).css('background', 'red'); 
相关问题