TimeSpinner Проверка, если неопределенный не работает

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

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

if ($("#ElementOfInterest").timespinner !== undefined){
    $("#ElementOfInterest").timespinner("destroy");
}

Это прекрасно работает при первой загрузке страницы, однако, это выдает следующее исключение:

не может вызывать методы на отметке времени до инициализации; попытался вызвать метод 'уничтожить'

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

Таким образом, единственный способ для правильной работы моего пользовательского интерфейса - это обернуть его в try/catch блок, как это:

if ($("#ElementOfInterest").timespinner !== undefined) {
    try {
        $("#ElementOfInterest").timespinner("destroy");
    } catch (error) {
    }
}

Это работает, но довольно небрежно. Я бы предпочел, чтобы проверка прошла успешно и удалила try/catch блок из кода.

Я пропускаю какую-то специальную проверку или что-то? Что тут происходит?

Обновить

Я попробовал следующий код, предложенный @GlenSwift:

if (typeof $("#ElementOfInterest").spinner("instance") !== 'undefined') {
    $("#ElementOfInterest").timespinner("destroy");
}

Это, однако, дал мне это исключение:

не может вызывать методы на счетчике до инициализации; попытался вызвать метод 'instance'

Я тоже пробовал timespinner("instance") но я просто вернулся

undefined это не метод

Таким образом, похоже, что проверка экземпляра временного указателя не была реализована.

2 ответа

Решение

Что ж $("#ElementOfInterest").timespinner !== undefined просто проверяет, если $().timespinner определяется, что будет, пока плагин загружен. Как насчет проверки, имеет ли элемент класс, который добавляет спиннер? if ($("#ElementOfInterest").hasClass('ui-spinner-input'))

Пытаться:

if (typeof $( "#ElementOfInterest" ).spinner( "instance" ) !== 'undefined') {
    $("#ElementOfInterest").timespinner("destroy");
}

ссылка: http://api.jqueryui.com/spinner/

Другие вопросы по тегам