2012-11-14 2 views
0

기존 jQuery 플러그인을 확장하려고하고 있는데, 이전에 논의되었던 몇 가지 문제가 발생했습니다. 불행히도 제 경우와 완벽하게 관련이 없습니다. 기본적으로, 내 코드는이jQuery 플러그인 확장자 내에서 this.element에 액세스하는 데 문제가 있습니다.

(function($) { 
    var self = $.ech.multiselect.prototype, 
     orig_create = self._create, 
     orig_init = self._init; 
    var extensionMethods = { 
     elemental: null, 
     tooltip: function(e){ 
      var id = self.elemental.attr("id"); 
      //code 
     }, 
     _create: function() { 
      var ret = orig_create.apply(this, arguments); 
      //code 
      return ret; 
     }, 
     _init: function() { 
      var ret = orig_init.apply(this, arguments); 
      this.elemental = this.element; 
      return ret; 
     }, 
     _bindEvents: function() { 
      self.tooltip(e); 
     } 
    }; 

    $.extend(true, self.options, {tooltip: true}); 
    $.extend(true, self, extensionMethods); 

})(jQuery); 

내 문제처럼 뭔가 내가 컨트롤의 ID를 얻기 위해 사용할 수 있도록 내가는 "원소"개체 내부 this.element에 대한 참조를 저장하기 위해 노력하고있다 않습니다 내부 툴팁(). 그러나 작동하지 않으며 거의 ​​포기했습니다.

답변

0

여러분은 프로토 타입 객체 자체 인 self을 사용하고 있습니다.

tooltip: function(e){ 
    var id = this.elemental.attr("id"); 
}, 

과 :

_bindEvents: function() { 
    this.tooltip(e); 
} 

프로토 타입의 elemental 설정해서는 안됩니다를, 요소가 인스턴스마다 다르기 때문에 당신은 인스턴스를 참조하고 올바른 속성을 가지고있는, this를 원한다.

+0

대단히 감사합니다. 예상대로 솔루션은 바로 저의 얼굴을 쳐다 보았습니다! –

관련 문제