2011-02-16 106 views
2

下面是一个快速的例子。我试图更好地为jquery编写选择器,因为我似乎为了完成任务而依赖于太多的循环。选择不带循环的div的最后一个子元素

在这个特殊的例子中,我想添加“绝对”类,所有的div都有ganttview-block-container类,除了父ganntview-blocks div中的最后一个。

HTML:

<div class='ganttview-blocks'>  
<div class='ganttview-block-container'></div> 
<div class='ganttview-block-container'></div> 
<div class='ganttview-block-container'></div>  
</div> 

<div class='ganttview-blocks'>  
<div class='ganttview-block-container'></div> 
<div class='ganttview-block-container'></div> 
<div class='ganttview-block-container'></div> 
</div> 

的Javascript:

$("div.ganttview-block-container").addClass("Absolute").addClass("Opacity"); 

$($("div.ganttview-blocks")).each(function() { 
    var thisDiv = $(this); 
    thisDiv.children("div.ganttview-block-container:last").removeClass("Absolute");  
}); 

我的JavaScript/jQuery的正确实现这一目标,但它似乎很低效。我相信有一种更加优雅的方式来完成这个任务......甚至可能在一行中。

任何人都可以帮忙吗?谢谢!

+0

可能重复:http://stackoverflow.com/questions/543513/getting-last-child-of-div – Hello71 2011-02-16 01:53:40

+0

可能重复:HTTP:// stackoverflow.com/questions/3768641/selecting-the-last-child – Hello71 2011-02-16 01:56:47

回答

5

我认为你需要:not:last-child

$('.ganttview-block-container') 
    .addClass('Opacity') 
    .filter(':not(:last-child)') 
    .addClass('Absolute'); 
0

为什么不只是做

$("div.ganttview-blocks div.ganttview-block-container:last").each(...) 

应该让你的元素你了。

相关问题