【问题标题】:jQuery next sibling li not working on last itemjQuery下一个兄弟li没有在最后一项上工作
【发布时间】:2011-03-07 13:51:20
【问题描述】:

目前大部分时间都在工作:

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

【问题讨论】:

    标签: jquery list next siblings


    【解决方案1】:

    您需要稍作调整,使用 .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>
    

    您想找到下一个 &lt;li&gt;,它是 .nextproject 的父元素的兄弟(不是下一个元素 &lt;li&gt;)...它刚刚发生除了最后一部分之外的所有部分,因为他们有 &lt;ul&gt;&lt;li&gt; 里面的元素(右边的图像)。最后一个“关于”部分没有任何&lt;li&gt; 子项,而之前右侧的第一个小图像是它滚动到的内容,而不是实际部分......所以它最后没有工作:)

    现在我想起来了,你有没有可能混淆了.find().filter().filter() 也可以...但是由于 .nextAll() 采用选择器,因此在这种情况下不需要。

    【讨论】:

    • 美丽。谢谢你。我并没有混淆这两者,我只是在尝试多种可能性来实现我想要做的事情。 .find() 只是我尝试的最后一个。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多