jQuery - 过滤掉第一个和第二个元素的最有效方法是什么?

时间:2011-09-15 19:25:44

标签: jquery

我正在使用最新最好的jQuery。

我将有十个div与内容。在页面加载时,我需要关闭除第一个和第二个之外的所有div。只有我希望可见的前两个div。

在那些可见的两个div下面是“显示更多”和“显示更少”按钮。当用户单击“显示更多”按钮时,所有div都将向下滑动。当用户单击show less按钮时,除前两个div之外的所有div都应向上滑动。

我知道如何获得第一个,最后一个,但我不知道如何过滤掉第一个和第二个元素。我知道我可以通过比我已经完成的更多的修补来完成这项工作,但我想知道最有效和可读的方法来完成它。你能帮助我吗?

一页加载,这应该通过并关闭除第一和第二个div之外的所有内容:

$(".BrandParagraph").each(function() {
    // should close all but first and second
    $(this).slideUp;
});

 $(".ShowMore").click(function() {
     // slide down all
     $(".BrandParagraph").slideDown();
 });

 $(".ShowMore").click(function() {
     // slide up all but first and second
     $(".BrandParagraph").slideDown();
 });

5 个答案:

答案 0 :(得分:5)

您可以使用gt(n)选择大于索引n的元素:

$(".myDivs:gt(1)")

答案 1 :(得分:4)

尝试使用大于索引的选择器:jQuery :gt(n)

$(".BrandParagraph:gt(1)")

您可以将代码修改为:

$(".BrandParagraph:gt(1)").each(function() {
    // should close all but first and second
    $(this).slideUp;
});

 $(".ShowMore").click(function() {
     // slide down all
     $(".BrandParagraph").slideDown();
 });

 $(".ShowLess").click(function() {
     // slide up all but first and second
     $(".BrandParagraph:gt(1)").slideDown();
 });

答案 2 :(得分:1)

您可以使用slice方法获取所有项目,但首先是:

$(".BrandParagraph").slice(2).slideUp();

答案 3 :(得分:0)

听起来你已经过度使问题变得复杂了......只需在第一个div中添加一个类,然后从中选择。如果您只选择第一个和第二个,则语法为$(selector).eq(0)$(selector).eq(1)

答案 4 :(得分:0)

这会有用吗?似乎过于简单但它应该完成工作......

    var divCount = 1;

    $(".BrandParagraph").each(function() {
    if(divCount >2){
    // should close all but first and second
    $(this).slideUp;
}
else
{
  divCount++;
}
});

 $(".ShowMore").click(function() {
     // slide down all
     $(".BrandParagraph").slideDown();
 });

 $(".ShowMore").click(function() {
     // slide up all but first and second
     $(".BrandParagraph").slideDown();
 });