2014-10-17 4 views
0

В настоящее время у меня есть текстовое поле ввода, которое может иметь или не иметь счетчик времени, привязанный к этому конкретному элементу. В некоторых случаях мне нужно полностью удалить функциональность timespinner (в отличие от ее отключения), чтобы правильно отобразить ее на странице.TimeSpinner Check If Undefined Not Working

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

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

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

не может вызывать методы на временном проигрывателе до инициализации; попытка вызвать метод «уничтожить»

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

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

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

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

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

Update

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

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

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

не может вызывать методы блесны до инициализации ; попытался метод вызова «например»

Я также попытался timespinner("instance"), но я просто вернулся:

неопределенный не метод

Так это выглядит, как проверка для экземпляра таймер не был реализован.

+1

«это исключает». Pls, предоставить сообщение об ошибке? –

+0

Добавлено исключение, которое бросается в мое обновление. – Exitium

ответ

1

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

1

Try:

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

исх: http://api.jqueryui.com/spinner/#method-instance

+0

Я пробовал, и это не сработало. Я считаю, что пробовал это раньше, без каких-либо достойных результатов. Я обновил свой вопрос, за исключением того, что получил. – Exitium

+0

Pls, проверьте, загружены ли jquery и jquery ui в момент выполнения кода –