使用jQuery从UL LI中删除类但不使用UL LI UL LI

时间:2011-10-06 14:08:30

标签: jquery accordion

我正在修改手风琴脚本,将类active添加到被点击的链接中,但是对于子项,我遇到了问题。

基本上,如果你点击手风琴的一个孩子,我需要它来添加活动的类而不从父母移除它。喜欢这个

parent-item
parent-item (active)
   sub-item
   sub-item (active)
   sub-item
parent-item
parent-item

这是目前的一些脚本:

$("#menu li a").removeClass("active");
$(this).addClass("active");

谢谢,如果您需要澄清,请发表评论。

编辑:

子元素在技术上不是同一个孩子,因此.parent()将不起作用。

<li>
    <a href="#">parent-item</a>
    <ul>
        <li><a href="#">sub-item</a>
    </ul>
</li>

4 个答案:

答案 0 :(得分:1)

您可以尝试:

$(this).parent().siblings().children('a').removeClass("active");
$(this).addClass("active");

这将删除相同级别元素上的.active

答案 1 :(得分:0)

你的意思是这样的吗?

$("#menu li a").removeClass("active");
$(this).addClass("active");
$(this).parent().addClass("active");

删除活动类后,只需将其添加回选定项其父级。

编辑:查看您的HTML片段,您应该能够根据需要向后走,然后再回来。 e.g。

$("#menu li a").removeClass("active");
$(this).addClass("active");
$(this).parent().parent().children("a").addClass("active");

答案 2 :(得分:0)

类似的东西:

$("#menu > ul").removeClass("active");
$(this).parent("li").parent("ul").addClass("active");

应将活动类添加到相关的父项。

答案 3 :(得分:0)

这个例子也许可以帮到你

<ul id='menu'>
<li>
    <a>MElement1</a>
</li>
<li>
     <a>MElement2</a>
 </li>
</ul>
<ul id='menu1'>
<li>
    <a>Element1</a>
</li>
<li>
    <a>Element2</a>
</li>
</ul>

CSS

.deneme{
    color:red;
}

.deneme1{
color:blue;
}

JS

$('#menu').addClass('deneme')
$('#menu1 li a').addClass('deneme1')

$('#menu').live('click',function(){
    $(this).toggleClass('deneme')
})
$('#menu1 li a').live('click',function(){
    $(this).toggleClass('deneme1')
})

你可以在这里查看http://jsfiddle.net/h7fvW/