Ошибка jQuery Accordion + Anchor Tag «застряла как блок»?

Пример страницы:

http://jsbin.com/ohuze/2

Это простой jQuery UI Accordion. Каждая панель-аккордеон имеет UL (OL работает так же) с такой разметкой:

<ol>
        <li><a href="">Lorep ipsum dolor lorem ipsum dolor lorem ipsum dolor</a>?</li>
        <li><a href="">Lorep ipsum dolor lorem ipsum dolor lorem ipsum dolor</a>?</li>
</ol>

В IE6 вы увидите, что тег ‹a› отображается как блочный элемент, поэтому вопросительный знак оказывается за пределами, а не в конце строки текста. Кроме того, маркеры и/или номера элементов списка теперь выравниваются по нижнему краю текста, а не по верхнему.

Я сузил его до javascript, который выполняется для создания аккордеона. Это не проблема с CSS jQuery, так как его отключение само по себе не решает проблему.

Кто-нибудь знает, что может происходить в IE6, чтобы вызвать эту проблему рендеринга?

ОБНОВЛЕНИЕ: по-видимому, это также проблема IE7.

ОБНОВЛЕНИЕ 2: Поиграв еще немного, я еще немного сузил список:

  • ошибка не имеет ничего общего со списками. Проблема заключается в том, что любой тег привязки в jQuery Accordion будет отображаться как display: block (даже если кажется, что CSS по-прежнему указывает display: inline)

  • ошибка не имеет ничего общего с фактическим CSS, который пользовательский интерфейс jQuery использует для создания аккордеона. Я создал тестовую страницу, в которой используется полностью обработанный исходный код jQuery Accordion и сопутствующий CSS. В этом случае теги привязки остаются встроенными.

В заключение: похоже, что процесс рендеринга аккордеона через javascript портит отображение тегов привязки. Это может быть проблема с отображением/скрытием?


person DA.    schedule 14.04.2010    source источник


Ответы (1)


Решение:

Оказывается (неудивительно), что это проблема макета с IE6. Когда пользовательский интерфейс jQuery запускается для создания Accordion, теги привязки каким-то образом теряют макет (или им присваивается has-layout?). Решение состоит в том, чтобы добавить функцию обратного вызова, которая переустанавливает ее (я думаю) НЕ иметь макет:

$('.myDiv').accordion({ 
    collapsible: true, 
    autoHeight: false,
    active: false,
    change: function(){$(this).find('a').css('zoom','0')}
    });
person DA.    schedule 16.04.2010