JQuery UI 日期选择器:如何在呈现日历后绑定事件?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5201367/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 18:43:47  来源:igfitidea点击:

JQuery UI datepicker: how to bind an event AFTER the calendar was rendered?

jqueryeventsjquery-uidatepickerprimefaces

提问by bluefoot

I am using datepicker. The usual way to bind an event, lets say for example, beforeShowDay, would be:

我正在使用datepicker。绑定事件的常用方法,例如,beforeShowDay,将是:

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

What I need is to bind the beforeShowDayevent after the calendar was rendered. So, let's say first I render the calendar:

我需要的是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)
});

And then, if I try to bind something in the usual way:

然后,如果我尝试以通常的方式绑定某些东西:

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

The calendar will be - of course - rendered again inside '.mySpecialContainer', instead of just binding the event. I have tried:

日历将 - 当然 - 在里面再次呈现'.mySpecialContainer',而不是仅仅绑定事件。我试过了:

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

But that was just a desperate action :)

但这只是一个绝望的行动:)

回答by Andrew Whitaker

It doesn't make sense to me why you can't call bindon that particular datepickerevent (or, for that matter, most datepickerevents). Most other jQueryUI widgets allow late-binding of events.

我不明白为什么你不能调用bind那个特定的datepicker事件(或者,就此而言,大多数datepicker事件)。大多数其他 jQueryUI 小部件允许事件的后期绑定。

However, you can try the following. hasDatepickeris applied to datepickers, and calling .datepickeragain on those elements is notreinitializing the widget, it's just modifying an option:

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

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

回答by Sam Thompson

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

回答by Federico Martín Lara

With

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

I have the next bug:

我有下一个错误:

TypeError: $(...).datepicker is not a function

类型错误:$(...).datepicker 不是函数

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

It seems that you don't have tested this.

看来你没有测试过这个。

回答by Chris Sobolewski

You need .live(). http://api.jquery.com/live/

你需要.live(). http://api.jquery.com/live/

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

On second thought, I think I misunderstood the question... You need to have a datepicker without a function, and then later on give it a function? You'll probably be best off removing the datepicker and putting it back on.

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