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

Необходимо знать, был ли виджет jQuery UI применен к объекту DOM

Я использую jQuery и имею некоторые взаимодействия с пользовательским интерфейсом jQuery, где мне нужно получить параметры. Однако существует вероятность того, что функция пользовательского интерфейса jQuery еще не была применена к объекту DOM. Я получаю ошибку JavaScript прямо сейчас, когда я обращаюсь к опции.

У меня есть объект DOM, у которого есть индикатор прогресса (http://docs.jquery.com/UI/Progressbar), прикрепленный к нему (возможно). В другом потоке я пытаюсь получить доступ к параметрам с помощью domObj.progressbar("option", "value").

Как определить, есть ли в domObj progressbar?

4b9b3361

Ответ 1

Объект DOM получит дополнительный CSS-класс, добавленный к нему: "ui-progressbar". Если вы просматриваете источник на http://docs.jquery.com/UI/Progressbar, вы можете увидеть div с id = progressbar и не более того, но если вы используете Firebug и нажмите элемент, который вы видите, у него есть еще несколько добавленных классов.

Отредактировано: Я думаю, что решение @jamiebarrow является более правильным здесь.

Ответ 2

Вы можете получить доступ к объекту шага выполнения элемента:

$("#myid").data("progressbar")

Итак, чтобы использовать это:

var progressBar = $("#myid").data("progressbar");
if ( progressBar == null ) {
    // handle case when no progressbar is setup for my selector
} else {
    alert("The value is: " + progressBar.value());
}

Ответ 3

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

var hasWidget = $('selector').is(':ui-widgetname');

Ответ 4

Как и в jQuery UI 1.11, виджеты могут быть непосредственно протестированы с помощью метода instance:

var hasProgressbar = ($(element).progressbar("instance") !== undefined);

Документация: http://api.jqueryui.com/jQuery.widget/#method-instance

Ответ 5

Я предпочитаю использовать hasOwnProperty для любого объекта в JavaScript, так как он возвращает логическое значение каждый раз.

var hasWidget = $( "selector-here" ).data().hasOwnProperty( "widget-name-here" );
if ( hasWidget )
{
    // Put your awesome code here.
}

Какой ИМХО немного лучше, чем проверка нуля; что, если он переключится на undefined, что тоже ИМО - это то, что он должен вернуть.