JQuery UI datepicker: как привязать событие после отображения календаря?

Я использую datepicker. Обычный способ привязки события, скажем, например,beforeShowDay будет:

$('.selector').datepicker({
   beforeShowDay: function(date) { ... }
});

что мне нужно, так это связать beforeShowDay событие после отображения календаря. Итак, предположим, сначала я визуализирую календарь:

$('.mySpecialContainer').datepicker({
   //in this moment, for some reason, I am not allowed to bind nothing (that's not me who renders the calendar, that's why I am not allowed)
});

и затем, если я попытаюсь связать что-то обычным способом:

$('.mySpecialContainer').datepicker({
   beforeShowDay: function(date) { ... }
});

календарь будет - конечно-визуализирован снова внутри '.mySpecialContainer', вместо того, чтобы просто связывать событие. У меня есть попробовал:

$('.mySpecialContainer').bind('beforeShowDay', function(date) { ... });

но это было просто отчаянное действие:)

4 ответов


для меня не имеет смысла, почему вы не можете позвонить bind об этом конкретном datepicker событие (или, если на то пошло, большинство datepicker событий). Большинство других виджетов jQueryUI допускают позднюю привязку событий.

тем не менее, вы можете попробовать следующее. hasDatepicker применяется к datepickers и вызывает .datepicker снова на тех элементах не перезапустить виджет, просто изменив вариант:

$('.hasDatepicker').datepicker("option", "beforeShowDay", 
    function(date) { ... });

$('.ui-datepicker-current-day').click();

С

$('.hasDatepicker').datepicker("option", "beforeShowDay", 
    function(date) { ... });

у меня есть следующая ошибка:

TypeError: $(...).datepicker не является функцией

$(".hasDatepicker").datepicker('option', 'beforeShowDay', function(event) {

Кажется, что вы не проверили это.


вам нужно .live(). http://api.jquery.com/live/

$('.mySpecialContainer').live('beforeShowDay', function(date) { ... });

С другой стороны, я думаю, что неправильно понял вопрос... Вам нужно иметь datepicker без функции, а затем позже дать ему функцию? Вероятно, вам лучше всего удалить datepicker и снова надеть его.