javascript - "toggleClass()"工作不正常

标签 javascript jquery html css

.toggleClass() 方法只是将“类”添加到我的选择中,所以单击时我得到的是:

<div id="toggle" class>
...

代替

<div id="toggle" class="on">
...

我一直在尝试解决这个问题大约 2 个小时,阅读了关于同一问题的帖子,但似乎与我的情况不同,尽管结果是。

Javascript 的第一步只是动画加载屏幕并隐藏它

$(function() {
  $(".loader_gif_wrapper").fadeOut(1000, function() {
    $(".slider").animate({
      width: ["0%", "swing"]
    }, 2000, function() {
      // Animation complete.
      $(".loader_page_wrapper").hide();
      // FIN ANIMACIONES LOADING


      $("#toggle").click(function() {
        $(this).toggleClass('on');
        //$("nav").toggle();
      });
    });
  });
});
#toggle {
  position: absolute;
  left: 3rem;
  top: 3rem;
  z-index: 10000;
  width: 40px;
  height: 40px;
  cursor: pointer;
  float: right;
  transition: all 0.3s ease-out;
  opacity: 1;
  visibility: visible;
}

#toggle .span {
  height: 3px;
  background: #ffffff;
  transition: all 0.3s ease-out;
  backface-visibility: hidden;
  margin: 5px auto;
  border: solid 1px $tres;
} //#toggle.on{
//    border: solid 0px $tres;}
#toggle.on #one {
  transform: rotate(45deg) translateX(2px) translateY(4px);
}

#toggle.on #two {
  opacity: 0;
}

#toggle.on #three {
  transform: rotate(-45deg) translateX(8px) translateY(-10px);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="toggle">
  <div class="span" id="one">One</div>
  <div class="span" id="two">Two</div>
  <div class="span" id="three">Three</div>
</div>

最佳答案

您必须将事件声明放在回调之外,这样无论回调是否到达,您都可以确保在所有情况下都会附加该事件:

$(function() {
  $(".loader_gif_wrapper").fadeOut(1000, function() {
    $(".slider").animate({
      width: ["0%", "swing"]
    }, 2000, function() {
      // Animation complete.
      $(".loader_page_wrapper").hide();
    });
  });

  $("#toggle").click(function() {
    $(this).toggleClass('on');
    //$("nav").toggle();
  });
});

工作样本

$(function() {
  $("#toggle").click(function() {
    $(this).toggleClass('on');
  });
});
#toggle {
  position: absolute;
  left: 3rem;
  top: 2rem;
  z-index: 10000;
  width: 40px;
  height: 30px;
  cursor: pointer;
  float: right;
  transition: all 0.3s ease-out;
  opacity: 1;
  visibility: visible;
  background-color: green;
}

#toggle .span {
  height: 3px;
  background: #ffffff;
  transition: all 0.3s ease-out;
  backface-visibility: hidden;
  margin: 5px auto;
  border: solid 1px;
  border: solid 0px;
}

#toggle.on #one {
  transform: rotate(45deg) translateX(2px) translateY(4px);
}

#toggle.on #two {
  opacity: 0;
}

#toggle.on #three {
  transform: rotate(-45deg) translateX(8px) translateY(-10px);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="toggle">
  <div class="span" id="one"></div>
  <div class="span" id="two"></div>
  <div class="span" id="three"></div>
</div>

关于javascript - "toggleClass()"工作不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51134916/

相关文章:

JavaScript - 如何知道网页是第一次加载还是刷新后加载?

javascript - Tampermonkey 匹配所有子目录

Javascript 模块模式 - 我做错了什么?

javascript - jQuery ajax 请求,PHP 返回 false 但没有错误

javascript - 日期选择器未使用 Angular JS 进行清理

javascript - div 标签内的超链接

jquery - IE7 CSS/Jquery 错误(负边距和鼠标悬停突出显示)

javascript - 从输入 onclick 获取上一个 td

javascript - 更改屏幕大小时更改功能区菜单

javascript - 我的新 HTML 元素正在以指数速度创建 WTF Javascript 和 jQuery