jQueryUIDatePicker:如何在呈现日历后绑定事件?

jQueryUIDatePicker:如何在呈现日历后绑定事件?,jquery,events,jquery-ui,datepicker,primefaces,Jquery,Events,Jquery Ui,Datepicker,Primefaces,我正在使用。绑定事件的常用方法,例如,在ShowDay之前,可以是: $('.selector').datepicker({ beforeShowDay: function(date) { ... } }); 我需要的是在日历呈现后绑定beforeShowDay事件。那么,让我们先假设我渲染日历: $('.mySpecialContainer').datepicker({ //in this moment, for some reason, I am not allowed to

我正在使用。绑定事件的常用方法,例如,在ShowDay之前,可以是:

$('.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) { ... });
但那只是一个绝望的行动:)

你需要
.live()


再想一想,我想我误解了这个问题。。。你需要一个没有函数的日期选择器,然后再给它一个函数?您可能最好删除日期选择器并将其重新启动。

我不明白为什么您不能在特定的
日期选择器事件(或者,对于大多数
日期选择器事件)上调用
bind
。大多数其他jQueryUI小部件允许事件的后期绑定

但是,您可以尝试以下方法
hasDatepicker
应用于日期选择器,再次对这些元素调用
。datepicker
并不是重新初始化小部件,它只是修改一个选项:

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

我有下一个错误:

TypeError:$(…)。日期选择器不是函数


您似乎还没有对此进行测试。

是的。日期选择器由JSF Primefaces创建,并绑定到ManagedBean字段。所以我不想把事情搞砸。我只想在使用Primefaces渲染组件后绑定事件。因此,删除日期选择器并将其放回:no way:)这与
$('.mySpecialContainer')完全相同这对我不起作用,因为日历已呈现。有没有一种正式的方法可以获取DatePicker对象?我正在尝试
$('.hasDatepicker')
但这只是一个选择器,它为我带来了一个容器,除了that@bluefoot:我以为您有一个选择器,其中包含附加了datepicker小部件的元素?你是说你需要找到附加了
datepicker
s的元素,然后再附加事件吗?@bluefoot:我想我明白你的意思了
$(“.hasDatepicker”)
确实返回最初调用
datepicker()
的元素,但您可以使用
.datepicker(“选项”),修改选项。
函数,请参阅我的更新答案。如果有必要,我可以提供一个例子。同样。我的容器是一个
如果我使用
$(“#随便什么”).datepicker()
,它将创建一个包含类
hasDatepicker
的内部元素(以及其他元素)。我已经试过你的第二个例子了。我们也试图在prime faces论坛上发现这一点:@bluefoot:您必须从事件处理程序返回预期的数组。看看这个例子:你想做什么有什么不同?事情在5年内发生了变化(当Q最初发布时)。这不是一个评论而不是一个答案吗?
$('.hasDatepicker').datepicker("option", "beforeShowDay", 
    function(date) { ... });
$('.ui-datepicker-current-day').click();
$('.hasDatepicker').datepicker("option", "beforeShowDay", 
    function(date) { ... });
$(".hasDatepicker").datepicker('option', 'beforeShowDay', function(event) {