jQuery麻烦:添加嵌套在show / hide里面的class / remove类

时间:2017-07-27 09:14:17

标签: javascript jquery

我是初学者,我遇到了问题。 请你帮助我好吗? 我把div放在了彼此之上。 我用段落制作了两个其他div("按钮"),并使用jQuery show / hide效果来切换两个div。 这部分工作得很好。 不过我想在此效果中添加一个效果(添加类/删除类)来显示女巫一个是活跃的。 但它没有改变"按钮"的前景。 你可以帮我解决我的错误吗?

这是我的代码:



$(document).ready(function(){
   $( "#click2" ).click(function(){
     $( "#two" ).show();
     $("#click2").removeClass(".passive").addClass(".active");
   });
   $( "#click1" ).click(function(){
     $( "#two" ).hide();
     $("#click1").removeClass(".passive").addClass(".active");
   });
 });

.active, .passive{
  cursor: pointer;
  font-weight: bold;
}
.active{
  border-bottom: 2px solid blue;
  color: blue;
}
.passive{
  border-bottom: 2px solid gray;
  color: gray;
}

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<div class="row">
  <div id="click1" class="col-xs-6 active">
    <p  class="text-center text-uppercase">referencies a</p>
  </div>
  <div id="click2" class="col-xs-6 passive">
    <p class="text-center text-uppercase">referencies b</p>
  </div>
</div>
&#13;
&#13;
&#13;

所以show / hide是wirking但添加/删除类不是n&n; n。 你可以帮我解决我的错误吗?

5 个答案:

答案 0 :(得分:3)

删除&#39;。&#39; (点)来自css类名。 jQuery addClass和removeClass只接受css类的名称。

addClass("className") -- correct
addClass(".className") -- wrong

在你的情况下,它将是:

$("#click2").removeClass("passive").addClass("active");

答案 1 :(得分:1)

你必须从班级中删除点, 并添加其他按钮的更改调用,如下面的代码

$(document).ready(function() {
  $("#click2").click(function() {
    $("#two").show();
    $("#click2").removeClass("passive").addClass("active");
    $("#click1").removeClass("active").addClass("passive");
  });
  $("#click1").click(function() {
    $("#two").hide();
    $("#click1").removeClass("passive").addClass("active");
    $("#click2").removeClass("active").addClass("passive");
  });
});
.active,
.passive {
  cursor: pointer;
  font-weight: bold;
}

.active {
  border-bottom: 2px solid blue;
  color: blue;
}

.passive {
  border-bottom: 2px solid gray;
  color: gray;
}

`
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
  <div id="click1" class="col-xs-6 passive">
    <p class="text-center text-uppercase">referencies a</p>
  </div>
  <div id="click2" class="col-xs-6 active">
    <p class="text-center text-uppercase">referencies b</p>
  </div>
</div>
<div class="row">
  <div id="two" class="col-xs-12 active">
    <p class="text-center text-uppercase">Div content </p>
  </div>
</div>

答案 2 :(得分:0)

以下是更新后的代码:

<script type="text/javascript">
       $(document).ready(function(){
         $( "#click2" ).click(function(){
           $( "#two" ).show();
           $("#click2").removeClass("passive").addClass("active"); // Removed `.` from class names
         });
         $( "#click1" ).click(function(){
           $( "#two" ).hide();
           $("#click1").removeClass("passive").addClass("active");  // Removed `.` from class names
         });
       });
     </script>

答案 3 :(得分:0)

使用removeClassaddClass时,您只需提供类名,不需要.

&#13;
&#13;
$(document).ready(function() {
  $("#click2").click(function() {
    $("#two").show();
    $(this).removeClass("passive").addClass("active");
    $("#click1").removeClass("active").addClass("passive");
  });
  $("#click1").click(function() {
    $("#two").hide();
    $(this).removeClass("passive").addClass("active");
    $("#click2").removeClass("active").addClass("passive");
  });
});
&#13;
.active,
.passive {
  cursor: pointer;
  font-weight: bold;
}

.active {
  border-bottom: 2px solid blue;
  color: blue;
}

.passive {
  border-bottom: 2px solid gray;
  color: gray;
}

`
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
  <div id="click1" class="col-xs-6 active">
    <p class="text-center text-uppercase">referencies a</p>
  </div>
  <div id="click2" class="col-xs-6 passive">
    <p class="text-center text-uppercase">referencies b</p>
  </div>
</div>
<div class="row">
  <div id="two" class="col-xs-12 active">
    <p class="text-center text-uppercase">Div content </p>
  </div>
</div>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

  1. 如前所述,使用jQuery类方法时不需要使用dot;

  2. 您可以尝试使用toggleClass而不是addClass和removeClass来简化它:

    $( "#click3" ).click(function(){
        $("#click3, #click4").toggleClass("active passive");
    });
    $( "#click4" ).click(function(){
        $("#click3, #click4").toggleClass("active passive");
    });
    
  3. 您可以在行为中提及差异(现在活动元素在点击时变为被动)。

    为了进一步简化,我们可以只添加一个监听器,但要检查我们点击的确切内容:

    $(document).on('click', '.passive', function() {
      $('#click1, #click2').toggleClass("active passive");
    });
    

    https://jsfiddle.net/aakochar/u3c34b48/

    1. 作为替代方案(或者如果您想调查代码),请查看引导选项卡: http://getbootstrap.com/javascript/#tabs