2012-06-05 4 views
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); 
+0

내가 '그 무엇이다 .. 어디 _trigger' 표시되지 않는 이유는 무엇입니까? –

+0

_trigger는 위젯 팩토리가 이벤트를 버블 링하는 메소드로 제공하는 것입니다. – XeroxDucati

답변

2

jQuery를 이벤트가 발생한 DOM 노드에 바인딩을 통해 호출 이벤트의 컨텍스트 (즉 this)를 설정한다. 이 경우 슬라이드가 발생한 div.ui-slider이됩니다.

slide 핸들러에서 위젯을 참조하려면 slide 메소드가 액세스 할 수있는 참조를 저장해야합니다. 다행히도 var self = this;이 이미 _create에 있습니다.

따라서 thisself으로 바꿔도됩니다.

라이브 예-http://jsfiddle.net/kQYWf/