javascript - 如果单击其他元素,是否删除类?

标签 javascript jquery html css

我想让当前事件的 li 元素在点击时获得一些适当的样式,并在点击其他 li 的元素时将其删除,

我就是靠这个来做的:

$('li').click(function() {
  $(this).siblings().removeClass('current');
    $(this).addClass('current');
});

如您所见,代码在 jsFiddle 上有效,example on JsFiddle ,除了它对我不起作用,我怀疑这与 Turbolinks 和 Jquery-turbolinks 有关吗? ,还是只是一些 CSS 问题?

CSS 文件按以下顺序排列:

.current /*I tried sidebar ul li.current but none happened.*/

.sidebar ul li

.sidebar ul li:hover

.sidebar ul li:active

.sidebar ul li a

a

a:hover

更新 #1:我尝试过的解决方案。

$('li').click(function() {
      $(this).siblings().removeClass('current');
        $(document).on('page:load',function(){
  $('li').addClass('current');
             });
    });

这不是世界上最好的代码,这看起来很错误,但它只是徒劳的随机尝试。

这已经对整个 li 进行了更改(很明显),在页面加载后,这是一个半解决方案,除了我不知道如何获得点击的 li.

更新#2:Html 代码结构

    <body>

<nav class="navbar navbar-default hidden-lg hidden-md" role="navigation" style="margin-bottom:0;">
        <div class="container-fluid">
          <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                      <span class="sr-only">Toggle navigation</span>
                      <span class="icon-bar"></span>
                      <span class="icon-bar"></span>
                      <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">Brand</a>
            </div>

      <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
              <ul class="navbar navbar-nav navbar-right">
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
            </div><!-- /.navbar-collapse -->

        </div><!-- /.container-fluid -->
      </nav>
      <!-- navbar -->

         <div class="container-fluid">
                <div class="window">
                  <div class="col-md-12">
                      <div class="row">
                          <div class="col-sm-2 hidden-sm hidden-xs" style="padding:0;">

                              <div class="span2" style="height:5%;">
                                <div class="topsidebar"></div>
                              </div>
                              <div class="span8" style="height:90%;">
                                <div class="sidebar">
                                             <ul>
                                                <li><a href=""></a></li>
                                                <li><a href=""></a></li>
                                                <li><a href=""></a></li>
                                                <li><a href=""></a></li>
                                                <li><a href=""></a></li>
                                                <li><a href=""></a></li>
                                            </ul>      
                                </div>
                              </div>
                              <div class="span2" style="height:5%;">
                                <div class="bottomsidebar"></div>
                              </div>
                          </div>
                          <div class="col-sm-10">
                              <div class="span2" style="height:5%;">
                                <div class="windowtop" id="u">
                                </div>
                              </div>
                              <div class="span8" style="height:90%;">
                                <div class="windowmain" style="overflow:auto;">
                                  <%= bootstrap_flash %>
                                  <%= yield %>
                                </div>
                              </div>
                              <div class="span2" style="height:5%;">
                                <div class="windowbottom"></div>
                          </div>
                      </div>
                  </div>
                </div><!-- window -->
            </div><!--container-fluid-->
    </body>

我的目标是 sidebar div 中的第二个 li

最佳答案

尝试:

$(document).on("click",".sidebar li",function(){
  if (!$(this).hasClass("current")) {
    $("li.current").removeClass("current");
    $(this).addClass("current");
  }
});

这将检查您点击的 li 是否有当前类,如果没有则只触发其他语句

关于javascript - 如果单击其他元素,是否删除类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25084780/

相关文章:

javascript - 我需要在 javascript 中转义这些吗?

javascript - 将远程文件读取到浏览器中的 Node 缓冲区中

javascript - 随着背景颜色的变化更改按钮颜色?

html - 对齐 rails form_for 与 bootstrap 集成的按钮

javascript - 在 Google Chrome 中查看 HTMLElement 的内容?

javascript - AngularFire/Firestore - 将集合和文档作为服务返回

JavaScript:直接代码与 CPS 样式生成的代码性能比较

javascript - Select2 不会在更改/选择第一个选项时触发

javascript - 如何使用 jquery 检测绑定(bind)到元素的事件

html - Angular Material嵌套列高度计算