我正在使用最新最好的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();
});
答案 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();
});