使用.on()选择除了last和first之外的所有tr

时间:2012-03-21 10:56:47

标签: jquery

我有一个功能可以动态修改tbody。 所以我需要在1.7.1中使用类似的东西:

$("table#id").on('click', 'tr', callback);

现在我需要退出此事件,触发第一个和最后一个td。

所以我做了类似的事情:

$("table#id").on('click', 'td:not(:first, :last)', callback);

但这不起作用。 我也尝试过.live(),但我没有得到任何结果。

谢谢!

3 个答案:

答案 0 :(得分:0)

:first:last匹配jQuery对象中的第一个和最后一个元素 。由于您使用的是on(),因此将在包含单个元素(事件目标)的jQuery对象的上下文中评估该选择器。因此,该元素永远不会匹配,因为它既是集合中的第一个也是最后一个项目。

对比:first-child:last-child,与父元素中的第一个和最后一个元素匹配。使用它们可以解决您的问题:

$("#id").on("click", "td:not(:first-child, :last-child)", callback);

答案 1 :(得分:0)

您希望:first-child:last-child选择器 - :first:last是最后匹配的元素

$('table').on('click', 'td:not(:first-child, :last-child)', function() {
    alert('hi');
});​​​​​​​​​​​​​​​​​​​​​​​​​​​

答案 2 :(得分:0)

使用first-childlast-child选择器 请参阅jsFiddle