2012-10-29 54 views
1

我有一個菜單有多個ul項目。我想要的是將頂級菜單文本的顏色更改爲紅色。點擊時的兒童項目更改父母顏色

但是,這隻適用於當我點擊第一個項目,而不是在兒童項目。

例如,我想單擊hydrotherapy並更改爲紅色字Services。父母。任何想法?

$("nav.menu>ul>li").children().click(function() { 
    alert("asd"); 
    var item1 = $(this), 
     primeira_ul = item1.closest('.menu>ul#nav>li>a.t2'); 

    item1.addClass('font_red'); 
    return false; 
}); 

demo

+3

是[這是你想要什麼(http://jsfiddle.net/davidThomas/dPeLZ/3/)? –

回答

2

您可以搜索$(this)的第一個孩子,即a標記。請注意,$(this)指的不是事件源,而是已經是您的最高級別li的元素,但是該元素是$("nav.menu>ul>li")

您可能還想要取消設置兄弟姐妹。

$("nav.menu>ul>li").on("click", function() { 
    var item1 = $(this), 
     primeira_ul = item1.closest('.menu>ul#nav>li>a.t2'); 

    $(this).siblings().find("> a").removeClass('font_red'); 
    $(this).find("> a").first().addClass('font_red'); 
    return false; 
}); 

JS Fiddle

+0

+1尼斯方法,也作爲一個額外的額外刪除:)。 – kapa

1

一種可能的方式是尋找在第一輪最接近ul.first_level,然後使用.siblings()獲得鏈接本身在你的代碼(不作出重大修改,只是改變有問題的部分):

$("nav.menu>ul>li").children().click(function() { 
    var item1 = $(this); 
    var theLink = item1.closest('.first_level').siblings('.t2'); 

    theLink.addClass('font_red'); 
    return false; 
});​ 

jsFiddle Demo

0

另一種方式:

$("nav.menu>ul>li").children().click(function(e) { 
    e.preventDefault(); 
    $(this).parents('#nav>li:has(.t2)').find('>a').addClass('font_red'); 
});​