jquery - Bootstrap - 在导航栏中更改事件类

标签 jquery html css twitter-bootstrap

我知道这个问题被问了超过一百万次,但我无法填补这个空白。

我有一个非常基本的导航栏结构,如下所示:

<ul class="nav navbar-nav navbar-right">
        <li class="nav-item">
            <%= link_to "Entry", entry_path, class: 'nav-link', 'data-turbolinks' => false %>
        </li>
        <li class="nav-item">
            <%= link_to "Entry 2", entry2_path, class: 'nav-link', 'data-turbolinks' => false %>
        </li>
        <li class="nav-item localization-links">
            <% unless I18n.locale == :en %>
                <div class="unactive-localization-button">
                    <%= link_to "EN", locale: :en %>
                </div>
            <% else %>
                <a class: 'nav-link'>EN</a> 
            <% end %>
        </li>
        <li class="nav-item localization-links">
            <% unless I18n.locale == :fr %>
                <%= link_to "FR", locale: :fr %>
            <% else %>
                <a class: 'nav-link'>FR</a>
            <% end %>
        </li>
    </ul>

我的实际结构更复杂,所以我减少了大部分代码,如其他链接和条件,以提高可读性。 我这样更改事件类:

$(".nav li").click(function() {
    if ($(".nav li").hasClass("active")) {
       $(this).removeClass("active");
    } else {
       $(this).addClass("active");
    }
});

它适用于除我的本地化链接之外的所有链接(“条目 1”、“条目 2”等)。我只想为这些链接提供 active 类,但不知何故,到目前为止我读到的东西对我都没有用(我用这个 thread 来检查我哪里出错了)。当我更改本地化时,我没有出现控制台错误,而且我显然在浏览器的编辑器中手动添加了“事件”类,但没有使用我的代码。 任何想法为什么?提前感谢您的宝贵时间,感谢任何评论或回答!

最佳答案

我解决了这个问题。这不是一个常见问题(至少我在谷歌搜索时没有发现),但无论如何我都会发布我的解决方案,以防有人也遇到这样的问题。我的问题是 unless 语句不正确,这就是我如何让它工作的:

<% unless I18n.locale == :en %>
    <li class="nav-item">
        <%= link_to "EN", locale: :en %>
    </li>
<% else %>
    <li class="nav-item active">
        <a class='nav-link'>EN</a> 
    </li>
<% end %>
<% unless I18n.locale == :fr %>
    <li class="nav-item">
        <%= link_to "FR", locale: :fr %>
    </li>
 <% else %>
     <li class="nav-item active">
         <a class='nav-link'>FR</a>
     </li>
 <% end %>

所以如果用户选择语言环境,我就明确地传递 active 类。

关于jquery - Bootstrap - 在导航栏中更改事件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43983137/

相关文章:

css - 更改屏幕尺寸时背景变小,div 相互重叠

html - Bootstrap 列在移动 View 中未对齐

jquery addClass 在 ajax 调用后不起作用

javascript - 在Javascript中通过ID获取元素的效率如何?

javascript - 使用 jQuery 从 TR 求和

html - 高宽过渡原点

javascript - CSS 在表格的列背景颜色和表格中的选定行中禁用输入

jquery - 工具提示的 CSS 定位在模式弹出窗口内中断

css - 带有文本段落左右 Angular 形状的框,带有 css

html - Css 子选择器不起作用