【问题标题】:Adding active class from bootstrap to li element将活动类从引导程序添加到 li 元素
【发布时间】:2016-01-11 00:16:18
【问题描述】:

您好,我想问一下为什么我的代码不起作用。我在带有 bootsrap 和 haml 的 Rails 上使用 ruby​​。

这是我的 javascript 代码:

:javascript
  $(".nav navbar-nav li a").click(function() {
    $(this).parent().addClass('active').siblings().removeClass('active');
  });

这是我的导航栏代码:

%nav.navbar.navbar-inverse
  .container-fluid
    .navbar-header
      %img.image{:alt => "Ruby Logo", :src => "http://www.rossconf.io/images/projects/ruby-2779abad.png"}
      = link_to "Users", users_path, class: 'navbar-brand'
      #bs-example-navbar-collapse-1.collapse.navbar-collapse
    %ul.nav.navbar-nav
      %li
        %a{:href => addresses_path}
          Addresses
          %span.sr-only (current)
      %li
        %a{:href => imports_path}
          Import addresses
          %span.sr-only (current)
      - if current_user     
        %li
          %a{:href => logout_path}
            Logout
            %span.sr-only (current)
      - else
        %li
          %a{:href => login_path}
            Login
            %span.sr-only (current)

知道为什么它运行时没有错误但没有任何反应吗?活动类未添加到 li 元素。

【问题讨论】:

  • 可以分享一下生成的html吗

标签: javascript jquery ruby-on-rails twitter-bootstrap haml


【解决方案1】:

我猜你的代码有错误:

应该是:

$(".nav.navbar-nav li a").click(function() {
//-----^^-------missed a class selector here and you can see a space too 
    $(this).parent().addClass('active').siblings().removeClass('active');
}); 

【讨论】:

  • 遗憾的是,当我转到该选项卡时,li 元素仍然没有类。
  • 使用 $(this).parent().addClass('active') 并检查您是否可以在 dom 检查器中看到该类。
【解决方案2】:

首先你错过了在选择器中加入班级。第二件事是,如果您想在单击链接时添加活动类,那么有两种可能的解决方案:-

第一个解决方案是

$(".nav .navbar-nav li a").click(function(event) {
  event.preventDefault();
    $(this).parent().addClass('active').siblings().removeClass('active');
  });

第二个解决方案是:-

 $(function() {
     var pgurl = window.location.href.substr(window.location.href
.lastIndexOf("/")+1);
     $(".nav .navbar-nav li a ").each(function(){
          if($(this).attr("href") == pgurl || $(this).attr("href") == '' )
          $(this).addClass("active");
     })
});

如果我错了,不符合要求,请告诉我

【讨论】:

  • 我已经尝试过第一个解决方案,因为其他人告诉我。不幸的是,第二种解决方案也不起作用。值得一提的是我正在使用本地主机,但我认为问题不在这里。不知道下一步该做什么......
  • 请您告诉您单击菜单项时链接已更改。第二个解决方案仅在您的链接更改时有效。
  • 请看这个答案[链接] (stackoverflow.com/questions/20060467/…)
猜你喜欢
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 2021-12-22
  • 1970-01-01
  • 2017-05-06
  • 2019-06-24
相关资源
最近更新 更多