2013-03-16 25 views
0

我有一個導航欄,它由點擊時改變(「點亮」)的圖標組成,以指示當前顯示哪個div。一次只切換一個onClick imageChange(將所有其他圖像切換到原始狀態)?

問題是,我喜歡它,當一個圖像被改變(點擊時點亮),所有其他圖像恢復到原始狀態。

目前他們都只是簡單的切換,這意味着當我點擊一個,然後另一個,他們都保持點亮,我顯然不想。

有沒有簡單的方法來實現這個?

編輯:我目前正在使用jQuery圖片切換的this method。我是一名真正的業餘愛好者,所以我不知道我會在哪裏開始使用每個切換,以將所有其他圖標切換回原始狀態。

+2

你可以添加一些HTML和jQuery代碼?到目前爲止你做了什麼? – freshbm 2013-03-16 22:19:08

回答

1

定義一個類來指示選定的選項卡,並使用CSS應用高亮(顯示/隱藏圖像,更改精靈的背景位置等等)。然後:

$("#menu li").click(function (e) { 
    $("#menu li.selected").removeClass("selected"); 
    $(this).addClass("selected"); 
}); 

編輯:適應現有的代碼使用CSS應用的亮點,改變你的HTML,這樣每個菜單項有兩個圖像:

<ul id="menu"> 
    <li> 
     <img class="off" src="menu1-original-icon.png" /> 
     <img class="on" src="menu1-lit-up-icon.png" /> 
    </li> 
    <li> 
     <img class="off" src="menu2-original-icon.png" /> 
     <img class="on" src="menu2-lit-up-icon.png" /> 
    </li> 
    ... 
</ul> 

然後,使用CSS隱藏一個和顯示其他:

#menu .on, #menu .selected .off 
{ 
    display: none; 
} 
#menu .selected .on 
{ 
    display: inline; 
} 

這裏有一個演示:jsfiddle.net/PLRfJ

允許選擇無(點擊選擇取消選擇它),使用.toggleClass()代替.addClass()並排除this去除該類時:

$("#menu li").click(function (e) { 
    $("#menu li.selected").not(this).removeClass("selected"); 
    $(this).toggleClass("selected"); 
}); 

jsfiddle.net/PLRfJ/1

+0

這將不會切換選定的菜單項, – freshbm 2013-03-16 22:42:43

+0

目前,我有以下,這是一個if-else語句......您的代碼將在此代碼中的位置? '$(「。img-swap-1」)。live(「click」,function(){if($(this).attr(「class」)==「img-swap-1」){this.src = this.src.replace(「original-icon」,「lit-up-icon」);} else {this.src = this.src.replace(「lit-up-icon」,「original-icon」); } $(this).toggleClass(「on」);' – 2013-03-16 22:45:31

+0

@HenryFloyd - 我用示例HTML和CSS更新了我的答案,並添加了[鏈接到演示](http://jsfiddle.net/PLRfJ/)。希望這可以幫助。 – gilly3 2013-03-18 20:06:50