在jQuery中,如何删除所有出现的CSS类,并将其添加到标记的父级父级的特定兄弟中?

时间:2013-09-06 12:33:42

标签: jquery html css

我有一个手风琴菜单结构来显示客户的项目。每个项目还有两个其他链接,不在手风琴中。单击这些链接时,手风琴将重置为默认打开位置,即第一个项目。客户不希望这样:活动项目应该在手风琴中保持打开状态。很合乎逻辑。

这是结构:

<div class="ui-accordion">
    <h3>clickable title for accordion items</h3>
    <ul>
         <li><a></a></li>
         <li><a class="active"></a></li>
         <li><a></a></li>
    </ul>
    <h3>clickable title for accordion items</h3>
    <ul>
         <li><a></a></li>
    </ul>
    <h3>clickable title for accordion items</h3>
    <ul>
         <li><a></a></li>
    </ul>
</div>

因此,包含h3 ul的{​​{1}}上方的li应获得 等级a.active以及任何其他ui-state-active应删除该类。

我发现我可以使用

h3

...但我不知道如何将.addClass('ui-state-active').siblings().removeClass('ui-state-active');定位在h3之上。非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:2)

您可以为每个引用其“h3”的“a”添加属性。例如:

<a data-h3="h3one"></a>

请参阅:

<h3 id="h3one"></h3>

然后你的jQuery可以从:

开始
$('a').on('click', function() {
  var h3 = $('h3[id=' + $(this).attr('data-h3') + ']');
  // etc....

答案 1 :(得分:1)

试试这个

$('a.active').closest('ul')
             .prev() 
             .addClass('ui-state-active')
             .siblings('h3')
             .removeClass('ui-state-active');

答案 2 :(得分:0)

这有效:

$( "div.ui-accordion" ).accordion("activate", $('a.active').closest('ul').prev());

部分启发:jQuery UI Accordion activate 谢谢你的帮助!