0

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

这是结构:

<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包含lia.active应该得到这个类ui-state-active,任何其他的h3都应该删除那个类。

我发现我可以使用

.addClass('ui-state-active').siblings().removeClass('ui-state-active');

...但我不知道如何h3ul. 很感谢任何形式的帮助 :)

4

3 回答 3

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....
于 2013-09-06T12:46:46.817 回答
1

尝试这个

$('a.active').closest('ul')
             .prev() 
             .addClass('ui-state-active')
             .siblings('h3')
             .removeClass('ui-state-active');
于 2013-09-06T12:35:47.623 回答
0

这有效:

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

部分灵感来自于此:jQuery UI Accordion activate 感谢您的帮助!

于 2013-09-06T13:12:04.437 回答