0

I've built a really simple jquery ui widget that just creates a slider and tries to bubble up the slide event. The code is below. However, this._trigger is undefined in this context. How would I re-trigger the event in this case?

(function($) {
    $.widget("ui.timelineSlider", {
        options : {
        },

        _create : function() {
            var self = this;
            var element = self.element;
            var options = self.options;

            element.slider({
            slide:function (e, ui) {
                        this._trigger("slideHappened", null, {date: ui.value});
                }
            });
        },

        destroy : function() {
            this.element.next().remove();
        },

        _setOption : function(option, value) {
        }
    });
})(jQuery);
4

1 に答える 1

2

thisjQueryは、jQueryを介してイベントが発生したDOMノードにバインドされたイベントの呼び出しコンテキスト(つまり)を設定します。この場合div.ui-slider、スライドが発生したのはその上です。

ハンドラーからウィジェットを参照するには、メソッドがアクセスできるslide参照を保存する必要があります。slide幸いなことに、あなたはすでにで1つ持っていvar self = this;ます_create

したがって、あなたは単に置き換えることができthisselfあなたは良いです。

実例-http ://jsfiddle.net/kQYWf/

于 2012-06-06T01:34:05.403 に答える