【问题标题】:If statement within jQuery on Click function not running properly如果在 jQuery 中关于 Click 函数的语句没有正常运行
【发布时间】:2014-10-01 01:54:46
【问题描述】:

我正在尝试让导航栏在移动网站上打开时下推页面内容。

我有一个点击事件监听器、一个切换函数和一个事件监听器内部的 if 语句。

if 语句运行不正常有什么原因吗?我注意到“in”类实际上并没有被切换。相反,显示正在“阻止”和“无”之间切换。现在,当菜单打开时内容会向下移动,但在关闭时不会向上移动。谢谢!

$('.navbar-toggle').click(function(event) {
  $('.navbar-collapse').toggle('in');

  if ($(".navbar-collapse").is(":hidden")) {
    $('.content-below').css('margin-top','0px');
  }
  else if ($(".navbar-collapse").is(":visible")) {
    $('.content-below').css('margin-top','200px');
  }

});

编辑:

我从这个问题的最后一个答案中得到了 .toggle('in') 部分:Bootstrap 3 collapsed menu doesn't close on click

也许他打算使用 .toggleClass。

【问题讨论】:

  • 查看.toggle() 的文档:api.jquery.com/toggle。我想你想要.toggleClass()。此外,您可以检查.in 类的存在,而不是检查元素是否隐藏。

标签: javascript jquery twitter-bootstrap if-statement toggle


【解决方案1】:

如果您尝试切换类,您应该使用toggleClass 方法:$('.navbar-collapse').toggleClass('in');

【讨论】:

    【解决方案2】:

    如果您使用引导程序,您应该检查不同下拉菜单的链接,固定、静态、

    默认菜单:下推内容

    过来内容:http://getbootstrap.com/examples/navbar-static-top/

    <div class="navbar navbar-default navbar-fixed-top" role="navigation">
    

    下推内容:http://getbootstrap.com/examples/navbar/

    <div class="navbar navbar-default navbar-static-top" role="navigation">
    

    【讨论】:

      【解决方案3】:

      切换类,然后检查它是否在元素上会更容易:DEMO

      $('.navbar-toggle').on("click", function(event) {
      
        $('.navbar-collapse').toggleClass('in');
      
        if ($(".navbar-collapse").hasClass('in')) {
            $('.navbar-collapse').slideToggle();
            $('.content-below').animate({'margin-top':'200px'});
        }
        else {
            $('.navbar-collapse').slideToggle();
            $('.content-below').animate({'margin-top':'0px'});
        }
      
      });
      

      【讨论】:

      • 谢谢。如果我单击按钮两次以上,这会很好。我第一次单击它时,没有任何反应。第二次,菜单下拉到内容上。之后,一切正常。有什么办法吗?
      • 我没有遇到同样的问题,您使用的是什么浏览器?如果您可以在 JSfiddle 中重现您的问题,我可以从那里提供帮助。
      • 对不起,我无法让它在 JSfiddle 上运行。我正在使用 Chrome,但通过 Vagrant 开发环境访问该站点。我实际上翻转了您的边距顶部值以获得上述结果。如果我保持您的代码不变,结果如下:第一次单击时,菜单不会下拉(“in”类未添加到 .navbar-collapse 中),但内容向下移动。第二次单击时,菜单下拉(添加了“in”类),内容保持在向下的位置。第三次单击时,菜单再次下拉,内容向上移动(现在重叠)。
      • 第三次点击后,一切都会倒退:点击在菜单向下和内容向上之间切换,或者菜单消失和内容向下移动。这就是我最初切换值的原因。抱歉,解释太长了。
      • 您的菜单最初是可见的还是在页面加载时隐藏?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 2011-09-01
      • 1970-01-01
      • 2018-08-03
      • 2016-02-03
      • 1970-01-01
      • 2018-02-07
      相关资源
      最近更新 更多