Как заставить аккордеон JQuery UI работать без правильной структуры HTML (drupal) - PullRequest
1 голос
/ 08 февраля 2010

Я использую JQuery 1.3.2 и пользовательский интерфейс версии 1.7 и Drupal 6.15

Я бы хотел сделать аккордеон, используя HTML-вывод из Views. Я изменил файл .tpl.php для вывода пригодного для использования формата <h2></h2><div></div>,<h2></h2><div></div>.... Однако модуль Views оборачивает вывод в другой <div>, выглядя так:

    <div class="views-row views-row-1 views-row-odd views-row-first">

        <h2>...</h2>

        <div class="content clearfix">...</div>

   </div>
   <div class="views-row views-row-2 views-row-even">

        <h2>...</h2>

        <div class="content clearfix">...</div>

   </div>

Так что, по сути, нужные мне теги обернуты в проблемный <div>.

Я думал о методе JQuery 1.4 element.unwrap(), но 1.4 вызывает проблемы с Drupal 6.15 (неудачные вызовы AJAX). Представления не предоставляют никаких полезных переменных, кроме $rows, который содержит весь вывод HTML

Ответы [ 3 ]

7 голосов
/ 08 февраля 2010

Дополнительные div не должны вызывать проблемы (если только CSS не портит их), просто инициализируйте их немного по-другому:

$("#container_id").accordion({ header: '> div > h2'});

(где #container - это div, который оборачивает как ваш код, так и дополнительные родительские элементы)

Пожалуйста, , посмотрите этот пример Я собрал, показывая, что он работает, как и ожидалось. Вы можете просмотреть источник для примера здесь .

1 голос
/ 09 февраля 2010

Вы также можете рассмотреть возможность использования Views Accordion модуля . Views Accordion module screenshot

0 голосов
/ 09 февраля 2010

Другой альтернативой является переопределение шаблона представлений.

  1. При редактировании вида нажмите Тема: Информация
  2. Посмотрите на список используемых файлов шаблонов
  3. Откройте папку / sites / all / views и просмотрите эти шаблоны, чтобы выяснить, какой из них отправляет проблемный div
  4. Скопируйте этот шаблон в каталог вашей темы
  5. Отредактируйте все, что вам нужно (в этом случае удалите div)
  6. Очистите реестр тем Drupal, и разметка должна быть такой, как вы хотите.

Это не хак; Переопределение .tpl.php - это рекомендуемая практика в Drupal.

Я бы согласился, что просто изменить селектор jQuery было бы проще и лучше, но это всего лишь альтернатива, о которой следует знать.

...