在jQuery插件扩展中访问this.element的问题

时间:2012-11-14 12:56:06

标签: javascript jquery jquery-ui jquery-plugins

我正在尝试扩展现有的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。然而,它不起作用,我几乎放弃了。

1 个答案:

答案 0 :(得分:0)

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

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

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

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