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/