2017-03-06 35 views
0

我正在尝试在我创建的小导航菜单中的div上重复显示/隐藏命令。我可以在所有四个按钮上使显示/隐藏功能运行一次,但如果我点击同一个按钮三次,我就无法重复它。它只是添加活动类,但不会再隐藏剩余的div。我希望点击和取消点击div的操作每次都要永远工作。第一次点击后无法在菜单项上重复显示/隐藏

JS小提琴这里:https://jsfiddle.net/c3md14jf/

HTML:

<div class="mobile-container"> 
    <div class="mobile-row"> 
     <a href="#fa"> 
     <div class="mobile-square"> 
      <i class="fa fa-globe" style="font-size:48px;" aria-hidden="true"></i> 
      <p> 
       Foreign Affairs 
      </p> 
     </div> 
     </a> 
     <a href="#travel"> 
     <div class="mobile-square"> 
      <i class="fa fa-plane" style="font-size:48px;" aria-hidden="true"></i> 
      <p> 
       Travel 
      </p> 
     </div> 
     </a> 
    </div> 
</div> 
<div class="mobile-container"> 
    <div class="mobile-row"> 
     <a href="#dev"> 
     <div class="mobile-square"> 
      <i class="fa fa-code" style="font-size:48px;" aria-hidden="true"></i> 
      <p> 
       Development 
      </p> 
     </div> 
     </a> 
     <a href="#misc"> 
     <div class="mobile-square"> 
      <i class="fa fa-heart" style="font-size:48px;" aria-hidden="true"></i> 
      <p> 
       Fitness 
      </p> 
     </div> 
     </a> 
    </div> 
</div> 

CSS:

@import url('https://fonts.googleapis.com/css?family=Exo|Open+Sans|PT+Sans|Quicksand|Raleway|Ubuntu|Montserrat'); 

body { 
    color: #008fc5; 
    background-color: #fff; 
} 

p { 
    font-family: 'Georgia', serif; 
    font-size: 16px; 
    line-height: 22px; 
    margin: 0; 
} 

i { 
    padding-top: 10px; 
    padding-bottom: 5px; 
} 

.mobile-container a { 
    text-decoration: none; 
} 
.mobile-row { 
    width: 100%; 
    margin-top: 5px; 
} 
.mobile-square { 
    width: 49%; 
    height: auto; 
    min-height: 95px; 
    color: #fff; 
    background-color: #008fc5; 
    text-align:center; 
    display: inline-block; 
    vertical-align: middle; 
    border-radius: 5px; 
    position:relative; 
} 
.mobile-square p { 
    font-family: 'Montserrat', sans-serif; 
} 
.active { 
    background-color: #004762; 
} 

JS:

var mobileSquare = $(".mobile-square"); 

mobileSquare.click(function(){ 
    var activeSquare = $(this); 
    activeSquare.toggleClass("active"); 
    mobileSquare.not(activeSquare).hide(); 

    activeSquare.click(function(){ 
     mobileSquare.not(activeSquare).show(); 
    }); 
}); 

回答

2

所以我不仅改变了上( “点击” ,function(){...})处理程序,所以,而不是使用显示/隐藏我使用切换。通过这样做,我不必拥有activeclass的click处理程序。我怀疑这可能是问题的一部分。

var mobileSquare = $(".mobile-square"); 
 

 
mobileSquare.on("click", function(){ 
 
\t var activeSquare = $(this); 
 
\t activeSquare.toggleClass("active"); 
 
\t mobileSquare.not(activeSquare).toggle(); 
 

 
});
/* General Rules */ 
 

 
/* <link href="https://fonts.googleapis.com/css?family=Exo|Open+Sans|PT+Sans|Quicksand|Raleway|Ubuntu" rel="stylesheet"> 
 
font-family: 'Open Sans', sans-serif; 
 
font-family: 'Raleway', sans-serif; 
 
font-family: 'PT Sans', sans-serif; 
 
font-family: 'Ubuntu', sans-serif; 
 
font-family: 'Exo', sans-serif; 
 
font-family: 'Quicksand', sans-serif; 
 
*/ 
 
@import url('https://fonts.googleapis.com/css?family=Exo|Open+Sans|PT+Sans|Quicksand|Raleway|Ubuntu|Montserrat'); 
 

 
body { 
 
\t color: #008fc5; 
 
\t background-color: #fff; 
 
} 
 

 
p { 
 
\t font-family: 'Georgia', serif; 
 
\t font-size: 16px; 
 
\t line-height: 22px; 
 
\t margin: 0; 
 
} 
 

 
i { 
 
\t padding-top: 10px; 
 
\t padding-bottom: 5px; 
 
} 
 

 
.mobile-container a { 
 
\t text-decoration: none; 
 
} 
 
.mobile-row { 
 
\t width: 100%; 
 
\t margin-top: 5px; 
 
} 
 
.mobile-square { 
 
\t width: 49%; 
 
\t height: auto; 
 
\t min-height: 95px; 
 
\t color: #fff; 
 
\t background-color: #008fc5; 
 
\t text-align:center; 
 
\t display: inline-block; 
 
\t vertical-align: middle; 
 
\t border-radius: 5px; 
 
\t position:relative; 
 
} 
 
.mobile-square p { 
 
\t font-family: 'Montserrat', sans-serif; 
 
} 
 
.active { 
 
\t background-color: #004762; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://use.fontawesome.com/670a0bbb85.js"></script> 
 
\t <div class="mobile-container"> 
 
\t \t <div class="mobile-row"> 
 
\t \t \t <a href="#fa"> 
 
\t \t \t <div class="mobile-square"> 
 
\t \t \t \t <i class="fa fa-globe" style="font-size:48px;" aria-hidden="true"></i> 
 
\t \t \t \t <p> 
 
\t \t \t \t \t Foreign Affairs 
 
\t \t \t \t </p> 
 
\t \t \t </div> 
 
\t \t \t </a> 
 
\t \t \t <a href="#travel"> 
 
\t \t \t <div class="mobile-square"> 
 
\t \t \t \t <i class="fa fa-plane" style="font-size:48px;" aria-hidden="true"></i> 
 
\t \t \t \t <p> 
 
\t \t \t \t \t Travel 
 
\t \t \t \t </p> 
 
\t \t \t </div> 
 
\t \t \t </a> 
 
\t \t </div> 
 
\t </div> 
 
\t <div class="mobile-container"> 
 
\t \t <div class="mobile-row"> 
 
\t \t \t <a href="#dev"> 
 
\t \t \t <div class="mobile-square"> 
 
\t \t \t \t <i class="fa fa-code" style="font-size:48px;" aria-hidden="true"></i> 
 
\t \t \t \t <p> 
 
\t \t \t \t \t Development 
 
\t \t \t \t </p> 
 
\t \t \t </div> 
 
\t \t \t </a> 
 
\t \t \t <a href="#misc"> 
 
\t \t \t <div class="mobile-square"> 
 
\t \t \t \t <i class="fa fa-heart" style="font-size:48px;" aria-hidden="true"></i> 
 
\t \t \t \t <p> 
 
\t \t \t \t \t Fitness 
 
\t \t \t \t </p> 
 
\t \t \t </div> 
 
\t \t \t </a> 
 
\t \t </div> 
 
\t </div>

0

最好使用切换,而不是显示/隐藏。看看这是否指向正确的方向。

`https://jsfiddle.net/c3md14jf/1/` 
相关问题