由于我将jQueryUI更新为1.8,我在实现中发现了一些问题,如果我能找到如何子类化datepicker小部件的特定方法,我就可以自己修复它而无需等待修复它们。父代码,然后执行我的代码。
我正在阅读$ .widget,但我无法理解这是如何工作的。
我试过这样的事情:
$.widget("ui.datepicker", {
_showDatepicker: function(input) {
alert('Yo');
$.datepicker.prototype._showDatepicker.apply(this,arguments);
alert('Hey!');
}
});
还有各种各样的变化和想法我认为我只是不理解jQueryUI的'可扩展性',或者它无法完成。
有人知道如何实现这个目标吗?
THX
答案 0 :(得分:3)
1.8中的datepicker不使用小部件工厂。其他小部件可以,但是日期选择器还没有被重构以使用小部件工厂,这将在更高版本的jQuery UI中发生。
您可以执行类似于datepicker的操作:
var old_showDatepicker = $.datepicker._showDatepicker;
$.datepicker._showDatepicker = function(input){
console.log('hello');
old_showDatepicker.apply(this,arguments);
console.log('goodbye');
}
这是滑块:
$.widget("my.slider", $.ui.slider, {
_value: function(input) {
console.log('Yo');
$.ui.slider.prototype.value.apply(this,arguments);
console.log('Hey!');
}
});
答案 1 :(得分:0)
ui.tabs已经获得了很多的爱,这是另一种可能更少的代码方式:
(function( $, dp ){
var _showDatepicker = dp._showDatepicker;
dp._showDatepicker = function( input ){
alert( 'Yo' );
_showDatepicker.apply( this, arguments );
alert( 'Hey!' );
}
}( jQuery, jQuery.ui.datepicker );
TBH,我不会看看datepicker。小工具工厂要先进得多,只需看看ui.tabs如何同时挂钩事件和方法here