2012-06-05 36 views
0

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

我没有看到'_trigger'任何地方..那是什么? –

+0

_trigger是widget工厂提供的一种泡泡事件的方法。 – XeroxDucati

回答

2

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

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

因此,你可以简单地用self替换this,你很好。

活生生的例子 - http://jsfiddle.net/kQYWf/