0

我构建了一个非常简单的 jquery ui 小部件,它只创建一个滑块并尝试使幻灯片事件冒泡。代码如下。但是, this._trigger 在此上下文中未定义。在这种情况下,我将如何重新触发事件?

(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 将在通过它绑定到事件发生所在的 DOM 节点的事件上设置调用上下文(即)。在这种情况下,它将是div.ui-slider幻灯片发生的位置。

要从slide处理程序引用小部件,必须保存该slide方法可以访问的引用。幸运的是你已经有了一个var self = this;in _create

因此,您可以简单地替换thisself并且您很好。

现场示例- http://jsfiddle.net/kQYWf/

于 2012-06-06T01:34:05.403 回答