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

发布于 2024-12-08 09:41:39 字数 634 浏览 0 评论 0原文

我正在修改手风琴脚本以将类 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>

I'm modifying an accordion script to add the class active to the link that gets clicked, but for sub items, I'm having an issue.

Basically, if you click on a child of the accordion, I need it to also add the class active without removing it from the parent. Like this

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

Here's the bit of script currently:

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

Thanks, just post a comment if you need clarification.

EDIT:

The children elements aren't technically children of the same thing, so .parent() won't work.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

感情旳空白 2024-12-15 09:41:39

您可以尝试:

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

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

You can try:

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

This will remove the .active on the same level elements

眼眸 2024-12-15 09:41:39

类似于:

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

应该向相关父项添加一个活动类。

Something like:

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

Should add an active class to the relevant parent-item.

骄兵必败 2024-12-15 09:41:39

这个例子也许会对你的

<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/

This example maybe will help you

<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')
})

and u can check from here http://jsfiddle.net/h7fvW/

错爱 2024-12-15 09:41:39

你的意思是这样的吗?

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

删除活动类后,只需将其添加回所选项目及其父项即可。

编辑:查看您的 HTML 片段,您应该能够根据需要向上走,然后再向下走。例如

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

You mean something like this?

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

After removing the active class just add it back to the selected item and its parent.

EDIT: Looking at your HTML fragment you should be able to walk back up as far as you need and then come back down. e.g.

$("#menu li a").removeClass("active");
$(this).addClass("active");
$(this).parent().parent().children("a").addClass("active");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文