0

我正在尝试扩展现有的 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);

我的问题是我试图在“元素”对象中存储对 this.element 的引用,以便我可以使用它来获取工具提示()中控件的 ID。然而,它不起作用,我几乎放弃了。

4

1 回答 1

0

您正在使用self,它是原型对象本身。您想要this,它指的是实例并具有正确的属性:

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

和:

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

原型中的elemental永远不应该设置,因为每个实例的元素不同。

于 2012-11-14T13:17:16.493 回答