Проблема с попыткой выполнить код jQuery с использованием динамически загружаемых вкладок Ajax jQueryUI

Привет
Я использую вкладки jQueryUI в файле index.php
У меня есть 4 вкладки и 4 файла. Я загружаю содержимое каждой вкладки, используя функциональность jQueryUI Tabs Ajax.

Каждый файл имеет свои собственные подключаемые модули и код jQuery, но моя проблема заключается в том, что когда я загружаю (например) contact.php на вкладке «Контакты», код jQuery в contact.php не работает или срабатывает .

Я видел функцию .ajaxComplete(), но она "грязная", поскольку вынуждает меня возвращать весь код из каждого файла в index.php, и я хотел разделить код и сделать его более чистым.

Кроме того, карты Google не работают при динамической загрузке на вкладках jQueryUI...


person Enrique    schedule 12.02.2011    source источник
comment
У вас есть пример кода для публикации?   -  person Argiropoulos Stavros    schedule 12.02.2011


Ответы (1)


Согласно http://docs.jquery.com/UI/Tabs#...my_slider.2C_Google_Map.2C_sIFR_etc._not_work_when_placed_in_a_hidden_.28inactive.29_tab.3F

Любой компонент, для инициализации которого требуется некоторое вычисление размеров, не будет работать на скрытой вкладке, потому что сама панель вкладок скрыта с помощью display: none, так что любые элементы внутри не будут сообщать о своей фактической ширине и высоте (0 в большинстве браузеров). .

Есть простой обходной путь. Используйте технику смещения слева для скрытия неактивных панелей вкладок. Например. в вашей таблице стилей замените правило для селектора класса ".ui-tabs .ui-tabs-hide" на

.ui-tabs .ui-tabs-hide {
    position: absolute;
    left: -10000px;
}

Для карт Google вы также можете изменить размер карты, когда вкладка отображается следующим образом:

$('#example').bind('tabsshow', function(event, ui) {
    if (ui.panel.id == "map-tab") {
        resizeMap();
}
});

resizeMap() вызовет функцию checkResize() Google Maps для конкретной карты.

person binaryfrost    schedule 03.08.2011