【发布时间】:2010-11-04 20:54:47
【问题描述】:
DatePicker 有一个内部函数_adjustDate(),我想在它之后添加一个回调。
当前方法
这就是我目前的做法。基本上,只是用自身替换函数定义,加上新的操作。这会影响所有日期选择器,我也不确定是否需要。
$(function(){
var old = $.datepicker._adjustdate;
$.datepicker._adjustDate = function(){
old.apply(this, arguments);
// custom callback here
console.log('callback');
};
});
_adjustDate 是在下/上个月点击期间调用的内容。该函数接受三个参数。我很好奇是否有更好的方法来添加回调。
预期结果
我希望最终结果看起来像这样;其中afterAjustDate 是回调句柄:
$('#datepicker').datepicker({
showButtonPanel: true
, afterAdjustDate: function(){ $(this).find('foo').addClass('bar'); }
});
仅供参考
onChangeMonthYear 不是可接受的事件替代方案,live()/delegate()(不适用于 IE)绑定选项也不是。
这是因为需要在选择月份后应用类/操作元素。更改月份会重新创建日历中的元素;执行此操作时,jQueryUI 不够聪明,无法继承类更改。因此,我需要在更改日期后进行回调。
【问题讨论】:
-
您可能会生成一个自定义插件来继承数据选择器代码,并添加您自己的方法和事件。您的插件的每个实例都会在本质上进行自定义更改,而无需稍后进行修改。前任。定义插件时,请使用
$.widget('ui.myDatepicker','ui.datapicker',{...});的 3 选项形式,请参阅this post 了解更多信息 -
这可能是可行的 :) 这是一个老问题,自从我发布它以来,我已经学到了很多关于 jQuery 的知识,但我想我会提供一些代表并得到答案。
-
-1 因为你还没有用你的 cmets 更新你的问题。
-
@DarthVader:同样,这不适用于这里 - 问题不是可怕的解决方案(就像你留下的那种)
标签: javascript jquery jquery-ui jquery-callback jquery-ui-datepicker