2012-03-21 44 views
1

那么我有一个功能,即时修改tbody。 所以我需要使用像这样在1.7.1:选择所有tr,除了最后和第一个与.on()

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

现在我需要摆脱这种事件的触发第一个和最后TD。

所以我这样做:

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

但是,这是行不通的。 我也尝试过使用.live(),并且我没有得到任何结果。

谢谢!

回答

0

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

对比度:first-child:last-child,在父元素第一和最后一个元素匹配其中。使用起来应该解决您的问题:

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

最糟糕的是..我在CSS中使用这些选择器,但我没有意识到在jquery上使用它们 - 谢谢! – nax 2012-03-21 11:20:35

0

你想要:first-child:last-child选择 - :first:last是最后匹配的元素

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