0

我已经能够选择我想要的特定行,但我无法从这些 tr 中选择特定的 td。

我用它来选择行:

$('#time-slot tr:not(:first, :last)')

然后在那些选定的行中,我试图忽略第一个和最后一个 td 但它不起作用。我使用了与上面类似的方法

$('#time-slot tr:not(:first, :last) td:not(:first, :last)')

任何想法我应该如何解决这个问题。顺便说一句,我正在尝试单击并拖动鼠标以使用用户定义的颜色绘制单元格。

4

3 回答 3

1

我更喜欢使用较少的字符串选择器和更多的 jQuery 方法,以及使用:first-childand:last-child选择器来解决您的问题:

$("#time-slot").find("tr").not(":first-child, :last-child").find("td").not(":first-child, :last-child").addClass("active");

http://jsfiddle.net/7b4Ms/

根据您的期望,您没有很好地解释,这可能是也可能不是您想要的。这样做是选择所有tr不是第一个和最后一个的元素。在那些匹配的tr元素中,它选择所有td不是第一个和最后一个的元素。所以基本上,它不会选择table.

于 2013-01-25T06:11:26.017 回答
0

完全同意 Ian,只是我更喜欢使用 .children() 而不是 .find()。因为如果您有嵌套表,它可能会产生问题。

$("#time-slot").find("tr").not(":first-child, :last-child").find("td").not(":first-child, :last-child").addClass("active");

更改为:

$("#time-slot").children("tr").not(":first-child, :last-child").children("td").not(":first-child, :last-child").addClass("active");
于 2013-01-25T06:20:36.633 回答
0

试试这个(仅使用 css 选择器):

$("#time-slot tr:not(:first,:last) td:not(:first-child,:last-child)").addClass("active");

样本

于 2013-01-25T06:39:40.837 回答