2012-02-11 51 views
1

我正在爲一個簡單的菜單工作,點擊每個頂層菜單,打開子菜單,並設置第一個孩子不同的背景顏色。jquery ul li第一孩子換顏色

代碼在這裏:http://jsfiddle.net/X3Dey/

感謝。

+0

那麼你的問題到底是什麼? – 2012-02-11 01:07:17

+0

@MMC,請參閱'jsfiddle',我要點擊頂層菜單,顯示子菜單,然後第一個子菜單將bg顏色更改爲'#e9aa9e'。 – Giberno 2012-02-11 01:09:38

回答

1

你嘗試選擇你真正要選擇的元素的父元素(我相信):

$(this).children('.sub-menu-wrap').css('display','block'); 
$(this).children('.sub-menu-wrap:first-child').css('background','#e9aa9e'); 

應該改變(注意我鏈接函數調用,而不是創建一個全新的選擇):

$(this).children('.sub-menu-wrap').css('display','block').children().first().css('background','#e9aa9e'); 

:first-child僞選擇器過濾它應用到的元素,而不是他們的子元素,你必須明確地選擇子元素,然後限制到第一個元素。

這裏是一個演示:http://jsfiddle.net/X3Dey/4/

您可以通過使用更少的選擇,鏈接在可能的情況,以及使用DOM遍歷函數而不是字符串僞選擇優化代碼:

$('.menu').click(function(){ 

    //reset all menu items 
    $('.sub-menu-wrap').css('display','none').children().css('background','d2ff2d'); 

    //now run the code on the selected menu items 
    $(this).children('.sub-menu-wrap').css('display','block').children().first().css('background','#e9aa9e'); 
}); 

這裏是一個此代碼的演示:http://jsfiddle.net/X3Dey/5/