我正在尝试扩展现有的jQuery插件,我遇到了一些问题,之前已经讨论过,遗憾的是与我的情况并不完全相关。基本上,我的代码做了类似的事情
(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);
我的问题是我正在尝试在“elemental”对象中存储对this.element的引用,以便我可以使用它来获取tooltip()中的控件的id。然而,它不起作用,我几乎放弃了。
答案 0 :(得分:0)
您正在使用self
,这是原型对象本身。您需要this
,它引用实例并具有正确的属性:
tooltip: function(e){
var id = this.elemental.attr("id");
},
和
_bindEvents: function() {
this.tooltip(e);
}
原型中的elemental
永远不应该被设置,因为每个实例的元素不同。