从嵌套小部件触发事件

时间:2012-06-05 22:17:47

标签: jquery jquery-ui jquery-plugins

我已经构建了一个非常简单的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);

1 个答案:

答案 0 :(得分:2)

jQuery会将通过它绑定的事件的调用上下文(即this)设置为发生事件的DOM节点。在这种情况下,幻灯片就会出现div.ui-slider

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

因此,您只需将this替换为self,就可以了。

直播示例 - http://jsfiddle.net/kQYWf/