Может кто-нибудь сказать мне, что не так с моим живым методом jQuery?

Я создал это простое приложение для выбора времени, но по какой-то причине этот фрагмент кода не работает. У меня было это работает (возможно, это было мое воображение).

У меня есть 4 радио кнопки. С каждой кнопкой, к которой прикреплено событие click (с помощью метода live jquery), я показываю DIV и скрываю другие DIV. Я также (я думал, что я был), добавив метод плагина для недавно показанного DIV.

Посмотрите на ссылку ниже, и вы поймете, что я имею в виду. Первый DIV работает, но последующие - нет. Что мне не хватает?

Спасибо!

http://jsbin.com/ebige3

1 ответ

Решение

Есть много проблем с вашим кодом. С одной стороны, есть несколько текстовых полей с идентификаторами starttime а также endtimeтогда как идентификатор должен встречаться в документе только один раз.

Причиной вашей проблемы является тот факт, что при нажатии любой кнопки timepicker будет инициализирован для всех элементов, соответствующих $("#starttime, #endtime") селектор. Это будет означать первое div (который виден), работает хорошо, и поля выбора располагаются хорошо, но для последующего divs, он позиционируется в то время, когда div, с которым они связаны, скрыты, и поэтому их позиции не могут быть рассчитаны.

Я хотел бы изменить код, чтобы ваш divимеют идентификаторы "recur1", "recur2" и т. д., а не "daily" и "weekly", а также дают всем из них класс "recur". Тогда вы сможете удалить все ваши операторы if и просто выполните:

$('.recur').hide();
$('#recur'+recurType).show();

Это также позволит вам сделать это, что решит вашу проблему:

$('#recur'+recurType).find("#starttime, #endtime").timePicker({ ... });
Другие вопросы по тегам