jQuery toggleClass只切换一次

时间:2017-02-23 16:32:33

标签: javascript jquery

我有一个div,我试图将它的类从一个切换到另一个。我只能切换一次,但不会返回原来的类。我环顾四周寻找可能的答案并研究了传播功能,但是我不确定这是正确的用途吗?

<body>
    <div id="wrapBreather">
        <div id="counter" class="cInact">
         <!--<canvas id="timerAnimation"></canvas>-->
        </div>
    </div>
    <br />
    <button id="startStopCount" class="HomeButton" >Start</button>
    <script>
      $(startStopCount).click(function(e){
          e.stopPropagation();
          $('.cInact').toggleClass('cDown cInact');
      });
      $('html').click(function () {
          $('#counter').removeClass('cDown');
      });
  </script>
</body>

5 个答案:

答案 0 :(得分:2)

您正在通过$('.cInact')获取该元素。但是,当您切换课程.cInact时,您无法再通过$('.cInact')获取该元素(它不再具有该课程)。

您可以选择$('#counter')(获取ID而不是类,因为您没有切换ID)或将元素引用分配给变量:

var myAwesomeCounter = $('.cInact');

// Then use
myAwesomeCounter.toggleClass('cDown cInact');

答案 1 :(得分:1)

嗯,您正在选择课程&#39; cInact&#39;然后切换它的课程。 即删除它。

你好,你试图用同一个选择器再次选择元素:classname == cInact它不再适用于那个元素。所以什么都不做,没有任何反应。

要解决此问题,请尝试使用其他选择器,例如 -

$('#counter').toggleClass('cDown cInact');

答案 2 :(得分:0)

选择器$(startStopCount)错误。它应该是$("#startStopCount")

答案 3 :(得分:0)

&#13;
&#13;
    $('#startStopCount').click(function(e){
      e.stopPropagation();
      
    $('.cInact').toggleClass('cDown');
      });

$('html').click(function () {
 $('#counter').removeClass('cDown');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
        <div id="wrapBreather">
     <div id="counter" class="cInact">
     <!--<canvas id="timerAnimation"></canvas>-->
     </div>

        </div>
        <br />
        <button id="startStopCount" class="HomeButton" >Start</button>

      
  </body>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

  $('#startStopCount').click(function(e){
      e.stopPropagation();
      $('#counter').toggleClass('cDown cInact');
  });
  $('html').click(function () {
      $('#counter').removeClass('cDown');
  });

或许更好:

  $('#startStopCount').click(function(e){
      e.stopPropagation();
      $('#counter').toggleClass('cDown cInact');
  });
  $('body').click(function () {
      $('#counter').removeClass('cDown');
  });