jQuery next sibling li没有在最后一项上工作

时间:2010-06-23 23:00:48

标签: jquery list next siblings

这大部分目前都有效:

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

1 个答案:

答案 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()采用选择器,因此在这种情况下不需要。