我已经构建了一个非常简单的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);
答案 0 :(得分:2)
jQuery会将通过它绑定的事件的调用上下文(即this
)设置为发生事件的DOM节点。在这种情况下,幻灯片就会出现div.ui-slider
。
要从slide
处理程序引用窗口小部件,必须保存一个slide
方法可以访问的引用。幸运的是,var self = this;
已经有一个_create
。
因此,您只需将this
替换为self
,就可以了。
直播示例 - http://jsfiddle.net/kQYWf/