toggleClass 不会删除“显示”类

Posted

技术标签:

【中文标题】toggleClass 不会删除“显示”类【英文标题】:the toggleClass will not remove the class of 'showing' 【发布时间】:2018-07-11 03:24:36 【问题描述】:

我想给我的网站一个基本的 jquery 汉堡菜单图标,你可以点击它,它会变成一个十字架。一切正常,直到我想添加一个“显示”类来显示我的菜单内容。我可以让它显示菜单内容,但是一旦我想点击十字回到汉堡菜单栏,它就不再起作用了。任何建议...谢谢

$('.menu-icon').click(function() 
  $(this).toggleClass('show');
  $('ul').toggleClass('showing');
)
.hamburger,
.hamburger::before,
.hamburger::after 
  content: '';
  width: 2rem;
  height: 3px;
  background: blue;
  display: block;
  transition: all ease-in-out 350ms;


.hamburger::before 
  transform: translateY(-7px);


.hamburger::after 
  transform: translateY(4px);


.show .hamburger 
  transform: rotate(45deg);


.show .hamburger::before 
  display: none;


.show .hamburger::after 
  transform: rotate(-90deg);


@media screen and (min-width: 300px) 

    .btn--large 
        position: relative;
        top: 20px;
        padding: .6rem 1.8rem;
    

    .menu-icon 
        display: block;
        width: 30px;
        height: 30px;
        position: absolute;
        top: 20px;
        right: 20px;
        cursor: pointer;
    

    ul 
        display: none;
    

    .showing 
        display: block;
    

    .btn-origin 
        display: none;
    

    .header-logo 
        position: absolute;
        width: 70px;
        height: 60px;
        left: 50%;
        transform: translateX(-50%);
    

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>
  <div class='wrapper'>

    <img class='header-logo' src="assets/images/logo.jpg" >

    <a class='btn btn-origin' href="#">Get in touch</a>
    <div class='menu-icon'>
      <div class='hamburger'></div>
    </div>
    <div class='menu-content'>
      <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact</a></li>
        <li><a href="#">Location</a></li>
      </ul>
    </div>


  </div>
</header>

【问题讨论】:

您的代码运行良好。 当我应用最小宽度为 400 像素和 800 像素的媒体查询以使我的网站响应时,我从 css 文件中取出了我的代码。我想我搞砸了,可能是我的代码在尝试创建响应式网站时组织得不好,我可能会在某处应用一些规则来阻止它工作。但感谢您查看。祝你有美好的一天。 【参考方案1】:

不确定预期的输出是什么,但您的代码似乎运行良好,见下文:

$('.menu-icon').click(function() 


    $(this).toggleClass('show');

    $('ul').toggleClass('showing');


)
.hamburger, .hamburger::before, .hamburger::after 
        content: '';
        width: 2rem;
        height: 3px;
        background: blue;
        display: block;
        transition: all ease-in-out 350ms;
    

    .hamburger::before 
        transform: translateY(-7px);
    

    .hamburger::after 
        transform: translateY(4px);
    

    .show .hamburger 
        transform: rotate(45deg);
    

    .show .hamburger::before 
        display: none;
    

    .show .hamburger::after 
        transform: rotate(-90deg);
    




@media screen and (min-width: 300px) 

    .btn--large 
        position: relative;
        top: 20px;
        padding: .6rem 1.8rem;
    

    .menu-icon 
        display: block;
        width: 30px;
        height: 30px;
        position: absolute;
        top: 20px;
        right: 20px;
        cursor: pointer;
    

    ul 
        display: none;
    

    .showing 
        display: block;
    

    .btn-origin 
        display: none;
    

    .header-logo 
        position: absolute;
        width: 70px;
        height: 60px;
        left: 50%;
        transform: translateX(-50%);
    


/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<a class='btn btn-origin' href="#">Get in touch</a>
                <div class='menu-icon'>
                    <div class='hamburger'></div>
                </div>
                <div class='menu-content'>
                    <ul>
                        <li><a href="#">Home</a></li>
                        <li><a href="#">About</a></li>
                        <li><a href="#">Contact</a></li>
                        <li><a href="#">Location</a></li>
                    </ul>
                </div>

【讨论】:

谢谢,可能是它在我的整个 css 文件中不起作用,我可能应用了一些规则阻止它正常工作。

以上是关于toggleClass 不会删除“显示”类的主要内容,如果未能解决你的问题,请参考以下文章

jQuery toggleClass() 方法

[ jquery 方法 toggleClass(class|fn[,sw]) ] 此方法如果存在(不存在)就删除(添加)一个类

jQuery:单击外部元素以“关闭”使用toggleClass出现的菜单

jQuery的toggleClass()函数代码实例

jQuery的toggleClass()函数代码实例

vue中点击div里的当前元素添加class删除其他兄弟元素的class?