这大部分目前都有效:
$(".nextproject").click(function() {
$(window).scrollTo(
$(this)
.parents()
.nextAll()
.find("li:visible:first"),
1000,
{easing:'easeOutExpo', axis:'x', offset:-75 }
);
});
您可以在此处查看演示:http://www.studioimbrue.com/index2.php
整个事情都很好。当您单击底部的过滤器时,它仍然可以运行并跳过隐藏的div。一旦你到了最后,就在#about div之前,它不会继续下去,我也不知道为什么它不会。
编辑:我将div元素更改为li元素。仍然没有正常工作;它到达列表的最后一个,不会再进一步了。这根本没有任何意义。
答案 0 :(得分:3)
您需要稍加调整,使用.nextAll()
调用中的选择器,如下所示:
$(".nextproject").click(function() {
$(window).scrollTo(
$(this)
.parents()
.nextAll("li:visible:first"),
1000,
{easing:'easeOutExpo', axis:'x', offset:-75 }
);
});
由于你的HTML是这样的:
<li class="container photography_cat" style="">
<!-- Other stuff.... -->
<div class="nextproject"></div>
</li>
您想要找到下一个<li>
.nextproject
的父级(不是子的下一个元素<li>
的兄弟姐妹) ...它恰好在除最后一部分之外的所有部分上工作,因为它们内部有<ul>
个<li>
元素(右边的图像)。最后一个“关于”部分没有任何<li>
个孩子,之前右边的第一个小图像是滚动到的,而不是实际的部分...所以它不起作用结束:))
既然我想到了,你是否有可能混淆.find()
和.filter()
? .filter()
也可以正常运行......但由于.nextAll()
采用选择器,因此在这种情况下不需要。