【问题标题】:jQuery multiple classes toggle on clickjQuery 多个类在点击时切换
【发布时间】:2016-04-12 16:38:20
【问题描述】:

我在使用带有多个类的 jQuery 进行切换时遇到问题。 我有这个代码:

$(function(){
   $(".mobile_btn").on("click", function(){
       $(".main_nav").toggleClass("mobile_active");
   }); 
});

当用户点击 .mobile_btn 时,.main_nav 将与 .mobile_active 类切换。此外,我想插入 .container.container_active 并且我希望它们与 .main_nav 同时切换 .mobile_active。所以基本上我的代码应该是这样的:

$(function(){
   $(".mobile_btn").on("click", function(){
       $(".main_nav, .container").toggleClass("mobile_active container_active");
   }); 
});

我已经尝试过了,但它不起作用。有关如何解决此问题的任何想法?

谢谢

【问题讨论】:

  • 你需要有2个不同的语句
  • 你的 jQuery 不错。 HTML 中没有.container。看我的回答。

标签: javascript jquery


【解决方案1】:

你可以这样写:

$(function(){
   $(".mobile_btn").on("click", function(){
       $(".main_nav").toggleClass("mobile_active");
       $(".container").toggleClass("container_active");
   }); 
});

【讨论】:

【解决方案2】:

另一个想法是使用函数作为参数。

$(function() {
  $(".mobile_btn").on("click", function() {
    $(".main_nav, .container").toggleClass(function() {
      return $(this).hasClass('main_nav') ? 'mobile_active' : 'container_active';
    });
  });
});

(不建议,只是一种选择)

【讨论】:

  • 你能显示代码吗? @Sadikali Danntreliya 的回答也是正确的。可能是您的“点击”事件未触发?
【解决方案3】:

您是否测试过您的代码?因为它有效。请参阅演示。 您的 HTML 中没有 .container

片段

$(function(){
   $(".mobile_btn").on("click", function(){
       $(".main_nav, .container").toggleClass("mobile_active container_active");
   }); 
});
.container {outline: 3px dashed green; width: 300px; height: 90px;}
.main_nav {outline: 2px solid blue; width: 100%; height: 30px; }
.mobile_btn { width: 70px; line-height: 1.5; cursor: pointer; }
.main_nav.mobile_active { outline: 3px solid red; background: rgba(255,0,0,.6); color: #CCC; }
.container.container_active{outline: 5px solid #0f0; background: rgba(0,255,0,.3); color: #888; }
.main_nav:after { content:'MOBILE INACTIVE';}
.main_nav.mobile_active:after { content:'MOBILE ACTIVE';}
.container:after { content:'CONTAINER EMPTY';}
.container.container_active:after { content:'CONTAINER FULL';}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<section class="container">
  <nav class="main_nav">
    <button class="mobile_btn">SWITCH</button>
    </nav>
  </section>

【讨论】:

  • 没问题。你不需要改变你的 jQuery,事实上我也是这样写的。它是流线型的。
猜你喜欢
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-14
  • 2023-04-03
相关资源
最近更新 更多