单击子项时更改父颜色

时间:2012-10-29 23:11:37

标签: jquery dom-traversal

我有一个包含多个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 个答案:

答案 0 :(得分:2)

您可以搜索$(this)标记为a的第一个孩子。请注意,$(this)不是指事件来源,而是 $("nav.menu>ul>li") 元素,它已经是您的顶级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

答案 1 :(得分: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

答案 2 :(得分:0)

另一种方式:

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