在我的项目中使用了jQueryUI的插件日期选择器,
但在此代码中,“create”事件永远不会触发,
您可以查看官方网站上的文档:
选项标签中的
。
$('#datepicker').datepicker({
create: function(event, ui) {
alert("ppp");
}
});
答案 0 :(得分:3)
文件存在(如Nick所述)。如果您查看来源中的jquery.ui.widget.js
,您会看到:
$.Widget.prototype = {
// ...
_createWidget: function( options, element ) {
// ...
this._trigger( "create" );
this._init();
},
因此,create事件由jQuery-UI小部件工厂处理,因此应该所有小部件都支持。如果查看jquery.ui.button.js
,您将看到正在使用的小部件工厂:
$.widget( "ui.button", {
options: {
//...
你会发现按钮小部件 触发了创建事件。如果你查看jquery.ui.datepicker.js
,你将找不到任何$.widget
,但是当你将datepicker转换为widget工厂时,你会发现有关要做的事情的提醒:
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
},
datepicker不使用widget工具,也不实现create事件本身。
beforeShow事件确实有效,所以也许你可以使用它。
快速演示(请打开您的控制台):http://jsfiddle.net/ambiguous/kn3hq/
答案 1 :(得分:2)
我认为有一张关于此的公开票。
答案 2 :(得分:0)
您可以使用临时解决方案完成,在“母版页”中使用“dom inserted event”来捕捉日期选择器的创建:
$(document).bind('DOMNodeInserted', function (event) {
// If is a datepicker element
if ($(event.target).hasClass('ui-datepicker-calendar')) {
// Check only new elements
$('.hasDatepicker:not(.controlClass)').each(function (i, obj) {
// Add class for avoid current obj in next datepicker creation
$(obj).addClass("controlClass");
// Do what you want with $(obj)
});
}
});