选择div的最后一个子元素而不循环

时间:2011-02-16 01:48:45

标签: javascript jquery

这是一个快速的。我正在努力为jquery编写选择器,因为我似乎过于依赖循环来完成任务。

在这个特定的例子中,我想添加“Absolute”类,除了父ganntview-blocks div中的最后一个之外,所有具有ganttview-block-container类的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正确地完成了这个目标,但它看起来效率很低。我相信有更优雅的方式来完成这项工作......甚至可以在一行中完成。

有人可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:5)

我认为:not需要:last-child

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

答案 1 :(得分:0)

为什么不做呢

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

应该为您提供后续元素。