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 への参照を格納しようとしているため、それを使用して tooltip() 内のコントロールの 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 に答える