2015-02-09 58 views
1

道歉,如果這是很容易或我已經錯過了點...jQuery的菜單 - 切換子菜單區和父菜單按鈕CSS狀態變化

從搜索計算器,我結合了兩種非常有幫助代碼段,但我有一個奇怪的結果。

我有一個帶有3個父按鈕的菜單 - 每次單擊其中一個按鈕時,我想打開一個子導航框並更改父菜單項的CSS狀態。我希望這樣做,然後切換回下一次點擊或另一個父菜單項被點擊。

我在下面切換的子導航框打開/關閉,但切換非點擊父母菜單(與我想要的相反!)。我認爲我很近,但還很遠很遠!下面是我有:

的jQuery:

$(window).load(function(){ 
$(".shownavsection").click(function() { 
var cls = this.className.match(/link1|link2|link3/), 
    box = $(".section."+cls[0]); 

// slideUp() on all .countries elements 
$(".section").not(box).slideUp(); 

box.slideToggle(); 

$(".arr").not($(this)).toggleClass("on"); 
; 
return false; 


}); 
});//]]> 

CSS

li{ 
list-style-type:none; list-style-position:inside} 

a.arr:link, a.arr:visited 
{ 
width:160px; border-bottom:1px solid #CCC; float:left; 
font-family:Tahoma, Arial, Helvetica, sans-serif; 
font-size:12px; 
background-color: #FFF; 
height:21px; display:block; 
text-decoration:none; 
color:#999999; 
padding:5px 0px 0px 10px 
} 

a.arr:hover 
{ 
background-color:#f2f2f2; 
font-family:Tahoma, Arial, Helvetica, sans-serif; 
font-size:12px;color:#999999 
} 

.on { 
background: #000 !important; 
} 
.mm { 
border:1px solid #013b5d; 
border-top: 1px solid #fff; 
width: 960px; 
height:auto; 
padding:10px 5px 20px 5px; 
display:none; 
margin-top:10px; 
clear: both; 
-moz-box-shadow: 0 8px 10px #888; 
-webkit-box-shadow: 0 8px 10px #888; 
box-shadow: 0 8px 10px #888;  

font-family:Arial, Helvetica, sans-serif; 
} 

HTML

<ul> 

<li><a href="#" class="shownavsection link1 arr"> link 1</a></li> 
<li><a href="#" class="shownavsection link2 arr"> link 2</a></li> 
<li><a href="#" class="shownavsection link3 arr"> link 3</a></li> 
</ul> 

<div class="section link1 mm cf">1</div> 
<div class="section link2 mm cf">2</div> 
<div class="section link3 mm cf">3</div> 

感謝所有幫助

+0

放在一個小提琴(jsfiddle.net)也許我們可以爲您解決問題。 – 2015-02-09 13:23:10

+0

乾杯傑夫 - 沒有在之前的幾分鐘之內報名。讚賞。 – Huckerby 2015-02-09 13:28:03

+0

Jsfiddle鏈接:http://jsfiddle.net/eL4yvtod/2/ – Huckerby 2015-02-09 13:31:25

回答

1

使用下面的代碼 - 你必須使用.addClass().removeClass()

Working - JSFIDDLE

$(window).load(function(){  
    $(".shownavsection").click(function() { 
    var cls = this.className.match(/link1|link2|link3/), 
     box = $(".section."+cls[0]); 
     $(".shownavsection").not(this).removeClass("on"); // UPDATED LINE 
     $(this).toggleClass("on");      // UPDATED LINE 
     $(".section").not(box).slideUp(); 
     box.slideToggle(); 
     return false; 
    }); 
}); 

Click here to - Working Demo

更新答: - **看到上面的代碼** 「更新的訂單」爲您的第二個問題相關 - 如果用戶點擊兩次連續 - 它會從鏈接中刪除"on" clss。

See the Updates JSFiddle here

+0

@Huckerby - 查看上面的鏈接 - 它的工作 – prog1011 2015-02-09 13:32:11

+0

非常感謝你。我應該提到一件小事 - 是否有可能在連續兩次單擊「鏈接1」後刪除'on'類?如果不是謝謝你,你的寶石!我如何接受'接受'?看不到按鈕 - 道歉。 – Huckerby 2015-02-09 14:05:43

+0

@Huckerby - 當然,如果用戶在同一個「鏈接」上連續點擊兩次,您可以在這裏找到解決方案 - 請參閱上面的更新回答。 – prog1011 2015-02-10 05:43:56