2011-08-09 21 views
6

ui.sliderから拡張されたjQueryウィジェットを作成しようとしています。私は 'スライド'イベントで実行するカスタムメソッドを持っていると思います。私は通常、スライダウィジェットを使用した場合、親のオプションは、単に好き上書きしようとしたが、私は、変数のスコープを使用してこの問題に遭遇した:jQuery UIウィジェットを拡張する - 親イベントにアクセスする方法

$.widget("ui.myslider", $.ui.slider, { 
    _create: function() { 
     this.foo = "bar"; 

     // Outputs "bar" 
     this._mySlide(); 

     // Outputs "undefined" when triggered 
     this.options.slide = this._mySlide; 

     $.ui.slider.prototype._create.apply(this, arguments); 
    }, 
    _mySlide: function() { 
     alert(this.foo); 
    } 
} 

がどのようにスライドイベントで私の機能をトリガし、私の変数にアクセスすることができますか?

編集: リンクui.sliderするソース:https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.slider.js

編集:ソリューション

$.widget("ui.myslider", $.ui.slider, { 
    _create: function() { 
     $.ui.slider.prototype._create.apply(this, arguments); 
     this.foo = "bar"; 
    }, 
    _slide: function() { 
     $.ui.slider.prototype._slide.apply(this, arguments); 
     alert(this.foo); 
    } 
} 

答えて

9

のjQuery UI> = 1.9では、あなたが代わりに_superメソッドを使用することができます。

またはsuperApply

_slide: function() { 
    this._superApply(arguments); 
    // equivalent to $.Widget.prototype._slide.apply(this, arguments); 
} 
関連する問題