【问题标题】:Check element with class of active and slide down the next element beneath it检查具有活动类的元素并向下滑动其下方的下一个元素
【发布时间】:2013-10-29 07:51:44
【问题描述】:

我想检查具有类 nav-title 的元素是否也有一个活动类,如果为 true,则在具有 nav-title 类的元素下方向下滑动下一个元素(具有 .sub-nav 类) .

否则如果没有nav-title类的元素有active类,找到第一个.sub-nav类的元素,显示出来,往上走,把active类添加到.nav-title


下一个带有点击功能的代码可以正常工作,它只是第一个不工作的代码。我尝试在 html 文档本身中添加活动类,但是第一个元素和第二个激活类,没有子导航滑下来。

$(document).ready(function() {
  if ($("#nav").find("nav-title").hasClass("active")) {
    $(this).next(".sub-nav").slideDown("fast");
  } else {
    $("#nav").find(".sub-nav:first").show().prev().addClass("active");
  }

  $("#nav").on("click", ".nav-title", function() {
    $('.active').removeClass("active").next(".sub-nav").stop().slideUp("fast");
    $(this).toggleClass("active");
    $(this).next(".sub-nav").stop().slideDown("fast");
  });
});

有人可以帮忙吗?

顺便说一下,我的 html 看起来像这样:

<ul id="nav">
  <li class="nav-title">Title 1</li>
  <ul class="sub-nav">
    <li><a href="#">link 1</a></li>
    <li><a href="#">link 2</a></li>
  </ul>
  <li class="nav-title active">Title 2</li>
  <ul class="sub-nav">
    <li><a href="#">link 1</a></li>
    <li><a href="#">link 2</a></li>
  </ul>
</ul>

我的代码可能有点乱,我只是边学 jquery。

哎呀!我做了一个小例子:http://fiddle.jshell.net/kcWA8/2/

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    我使用了 James Montagne 的答案,效果很好,看起来我误解了这个 (this) 并在我的班级前面忘记了一个点。

    谢谢!

    【讨论】:

      【解决方案2】:

      在这种情况下,您不能以您认为可以的方式使用thisthis 内部的 if 不是导航。您还缺少findnav-title 之前的.。改为这样做:

      if ($("#nav").find(".nav-title").hasClass("active")) {
          $("#nav .nav-title.active").next(".sub-nav").slideDown("fast");
      }
      

      或者:

      var $active = $("#nav .nav-title.active");
      
      if ($active.length > 0) {
          $active.next(".sub-nav").slideDown("fast");
      }
      

      【讨论】:

      • 非常感谢,它工作得很好,我使用了你编写的第一个代码,我明白它为什么有意义。你们认为我的代码看起来不错吗?它可以优化或类似的东西。否则我会回答我的问题,因为已经找到了解决方案。
      • 关于优化代码的问题,你可以试试codereview.stackexchange.com 我可以快速指出一件事,你应该缓存你的jquery对象。与其多次调用$("#nav"),不如将​​其分配给一个变量并重新使用它以避免重新查询dom。类似于我在第二个代码 sn-p 中所做的。
      • 非常感谢,对我来说很有意义。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 2015-01-17
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多