Как заставить JQuery UI работать без правильной HTML-структуры (drupal)

Я использую JQuery 1.3.2 и UI версии 1.7 и Drupal 6.15

Я хотел бы сделать аккордеон, используя вывод HTML из модульных представлений. Я изменил файл .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.


person Douglas    schedule 08.02.2010    source источник


Ответы (3)


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

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

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

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

person Doug Neiner    schedule 08.02.2010

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

person marcvangend    schedule 08.02.2010

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

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

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

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

person Mike Crittenden    schedule 08.02.2010