Подтвердить что ты не робот

Проверьте, были ли инициализированы закладки jQuery UI (без проверки класса)

Использование вкладок jQuery UI - и я написал плагин, который интегрируется с вкладками ui. У меня есть настройка плагина для запуска вкладок пользовательского интерфейса jQuery, если он не был вызван .tabs(), но это просто проверяет класс:

 if(!$globalTabs.hasClass("ui-tabs")){
    $globalTabs.tabs();
 }

Но это проблематично, потому что часто, чтобы избежать FOUC, разработчики добавляют в классы пользовательского интерфейса вкладки, чтобы получить лучший первоначальный рендер перед document.ready.

Я могу проверить другой класс, например `ui-widget1, но интересно, есть ли другой/лучший способ?

4b9b3361

Ответ 1

Вы можете запросить подключенный виджет data():

if (!$globalTabs.data("tabs")) {
    $globalTabs.tabs();
}

Это поведение описано на странице Widget factory пользовательского интерфейса jQuery Вики развития и планирования:

  • Экземпляр подключаемого модуля доступен через $( "#something" ).data( "pluginname" )

    • Ссылка на объект jQuery, содержащий элемент DOM, доступный как свойство экземпляра как this.element, так что это легко перемещаться между объектом и элементом.

Обновление: Начиная с jQuery UI 1.9 и ключ виджета становится полноправным именем виджета, с точками, замененными тире, как в

if (!$globalTabs.data("ui-tabs")) {
    $globalTabs.tabs();
}

Использование неквалифицированных имен по-прежнему поддерживается в 1.9, но устарело, а поддержка будет уменьшена в 1.10.

Ответ 2

как-то это вызывает некоторую ошибку, когда я пытаюсь проверить экземпляр.

Мне нужно повторно инициализировать вкладки, и для меня попытка catch сделала трюк:

try {
    $('.mytabs').tabs('destroy');
} catch (exception) {}

после чего снова инициализируется:

$('.mytabs').tabs();