2

jQueryUIを1.8に更新してから、実装にいくつかの問題が見つかりました。datepickerウィジェットの特定のメソッドをサブクラス化する方法がわかれば、修正を待たずに自分で修正できるので、親コードを呼び出します。次に、コードを実行します。

私は$.widgetを読んでいましたが、それがどのように機能するかについて頭を悩ませることはできません。

私はこのようなことを試みました:

$.widget("ui.datepicker", {
  _showDatepicker: function(input) {
   alert('Yo');
   $.datepicker.prototype._showDatepicker.apply(this,arguments);
   alert('Hey!');
  }
 });

そして、他のあらゆる種類のバリエーションや、jQueryUIの「拡張性」を理解していないか、それができないと思ってしまいます。

誰かが私がこれを達成する方法を知っていますか?

どうも

4

2 に答える 2

3

1.8のdatepickerは、ウィジェットファクトリを使用しません。他のウィジェットは機能しますが、日付ピッカーはウィジェットファクトリを使用するようにリファクタリングされていません。これは、jQueryUIの新しいバージョンで発生します。

あなたは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!');
    }
});
于 2010-03-26T20:53:43.913 に答える
0

ui.tabsは多くの愛を得ていますが、おそらくコードが少ない別の方法は次のとおりです。

https://github.com/jquery/jquery-ui/blob/c1cda180a93a6c0a63cf21a68dacb54233e03d03/ui/jquery.ui.tabs.js#L688

(function( $, dp ){
    var _showDatepicker = dp._showDatepicker;

    dp._showDatepicker = function( input ){

        alert( 'Yo' );
        _showDatepicker.apply( this, arguments );
        alert( 'Hey!' );
    }
}( jQuery, jQuery.ui.datepicker );

TBH、私はデートピッカーを見ません。ウィジェットファクトリははるかに高度です。ここで、ui.tabsがイベントとメソッドを同時にフックする方法を見てください。

于 2011-09-16T05:32:31.063 に答える