如何在Jquery中的一组元素(基于类)之后向一个元素添加一个类?

时间:2014-02-02 16:40:58

标签: jquery

我有这样的评论结构:

<div class="comment"></div>
<div class="reply"></div>
<div class="reply"></div>
<div class="comment"></div>
<div class="comment"></div>
<div class="reply"></div>
<div class="comment"></div>
<div class="reply"></div>
<div class="reply"></div>

我想将班级last添加到最后一个回复(评论后),所以我做了类似的事情:

$('.reply:last').addClass('last');

但是,它仅将last类应用于last回复div。有没有办法在评论后将last类添加到最后一个回复中,所以它变为:

<div class="comment"></div>
<div class="reply"></div>
<div class="reply last"></div>
<div class="comment"></div>
<div class="comment"></div>
<div class="reply last"></div>
<div class="comment"></div>
<div class="reply"></div>
<div class="reply last"></div>

谢谢!

此外,是否可以让它像这样工作,我们在页面顶部有回复?如果我正在寻呼并且首先显示回复,则可能发生这种情况。

<div class="comments">
    <div class="reply last"></div>
    <div class="comment"></div>
    <div class="reply"></div>
    <div class="reply last"></div>
    <div class="comment"></div>
    <div class="comment"></div>
    <div class="reply last"></div>
    <div class="comment"></div>
    <div class="reply"></div>
    <div class="reply last"></div>
</div>

3 个答案:

答案 0 :(得分:1)

看一下jQuery的.nextUntil()。有了它可以做到以下几点:

$('.comment').each(function(){
    $(this).nextUntil('.comment').filter(':last').addClass('last');
});

JSFiddle Demo Here

我希望这有帮助!

答案 1 :(得分:0)

首例使用
$("body .comment:last-child .reply:last-child").addClass("last");

第二种情况使用

$("body").find(".comment").each(function(){
      $(this).find(".reply").last().addClass("last");
)};

检查此fiddle。我已经将各个注释div中的所有回复div移动到使用继承属性。

答案 2 :(得分:0)

您只需使用not()功能即可。我试过这个,看看

$('.reply:last').addClass('last');
$('.reply').not($('.reply:last')).removeClass('last');

和小提琴样本here