Получить ссылку на JQuery UI Аккордеонный Заголовок - PullRequest
2 голосов
/ 01 июля 2011

У меня есть JQuery Accordion, как показано ниже;

<div id="accordion">
 <h3 class="ui-accordion-header"><a id="link1" href="#">First Header</a></h3>
  <div id="div1">First Content</div>
 <h3 class="ui-accordion-header"><a id="link2" href="#">Second Header</a></h3>
  <div id="div2">Second Content</div>
</div>

Аккордеон создается следующим образом:

$("#accordion").accordion({
  collapsible:true,
  active:false,
  navigation:true,
  autoHeight:false,
  change:function(event, ui){
    var index = $(this).find("h3").index(ui.newHeader[0]);
    var header = $(this).find("h3")[index].find("a"); //<--- problem line
    var currentHeaderID = (header.attr("id")); //<--id that I need
  }
});

JSFiddle Link

Аккордеон отлично загружается.Я пытаюсь добиться двух вещей.

1- Получить идентификатор элемента href внутри тега заголовка, который был только что открыт (т.е. идентификаторы link1 и link2).Код выше внутри события изменения дает мне индекс заголовка.Но я изо всех сил пытаюсь заставить работать следующую строку (var header = ....).Вы могли бы

2- РАЗРЕШЕНО Когда пользователь нажимает на уже открытый заголовок, этот раздел закрывается, поэтому эффективно все разделы закрываются.Я не уверен, как мне этого добиться.Вы можете помочь?

Спасибо

1 Ответ

7 голосов
/ 01 июля 2011

Когда аккордеон изменяется, объект jQuery, обертывающий элемент <h3> активного заголовка, передается в ui.newHeader, поэтому вам нужно только использовать find () :

var currentHeaderID = ui.newHeader.find("a").attr("id");

Обновленная скрипка здесь .

...