1

这在很大程度上是有效的:

$(".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 元素。仍然无法正常工作;它到达列表的最后一个,不会再继续了。这根本没有任何意义。

4

1 回答 1

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>级的兄弟的下一个(不是下一个元素的级 a )......它恰好适用于除最后一部分之外的所有部分,因为它们里面有元素(上的图像正确的)。最后一个“关于”部分没有任何子项,以前右侧的第一个小图像是它滚动到的内容,而不是实际部分……所以它最后没有工作:).nextproject<li><ul><li><li>

现在我想起来了,您是否可能感到.find()困惑.filter().filter()也可以...但是由于.nextAll()需要选择器,因此在这种情况下不需要。

于 2010-06-24T00:54:11.010 回答