2012-11-14 39 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); 

我的問題是我想存儲參考了「質」的對象裏面this.element,這樣我可以用它來獲取該控件的ID在工具提示()中。它不起作用,然而我幾乎放棄了。

回答

0

您正在使用self,它是原型對象本身。你想this,它指的是實例,並且具有正確的屬性:

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

和:

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

在原型中的elemental不應該設置,因爲元素每個實例不同。

+0

非常感謝。正如所料,解決方案就在那裏凝視着我的臉! –