jQuery每四个元素,除非最后一个

jQuery every fourth element unless last

本文关键字:元素 最后一个 四个 jQuery      更新时间:2023-09-26

我试图在每四个元素之后添加一个'caption'元素,我使用这个工作,它工作得很好。

$('.each-work:nth-of-type(4n)').each(function() {
    $(this).after('<div class="each-work each-works-caption"><ul></ul></div>');
});

唯一的是元素的数量不能被4整除,它是一个CMS添加元素,所以元素的数量可以定期增长/缩小。如何编辑此函数以包含4n以外的其余元素?

作为一个例子,当前它看起来像这样:

<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work each-works-caption"><ul></ul></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work each-works-caption"><ul></ul></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work each-works-caption"><ul></ul></div>
<div class="each-work"></div>
<div class="each-work"></div>

而我更希望:

<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work each-works-caption"><ul></ul></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work each-works-caption"><ul></ul></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work each-works-caption"><ul></ul></div>
<div class="each-work"></div>
<div class="each-work"></div>
<div class="each-work each-works-caption"><ul></ul></div>

谢谢R

因此,除了选择每四个孩子,也选择最后一个孩子:

$('.each-work:nth-of-type(4n), .each-work:last-of-type').each(function() {
    $(this).after('<div class="each-work each-works-caption"><ul></ul></div>');
});

JSFiddle

尝试:

function addNewDiv() {
    $(this).after('<div class="each-work each-works-caption"><ul></ul></div>');
}
$('.each-work')
    .filter(':nth-of-type(4n)')
        .each(addNewDiv)
        .end()
    .last()
        .each(addNewDiv);