4

イベントを発生させるために_triggerメソッドを使用すると、ヒットし続けるスナッグにヒットしましたが、適切に把握できません。

基本的に、ウィジェットのインスタンスが複数ある場合、同じページでインスタンス化される最後のウィジェットが他のすべてのウィジェットよりも優先されます。

$ .extendを学習して正常に使用し、インスタンスに固有のオブジェクトを作成しましたが、次の問題に取り組む方法に困惑しています。

インスタンスごとに有効になるように_triggerメソッドを適切に使用する方法。

(function($) {
  $.widget("a07.BearCal", {
    options: {  },
    _create: function() {
        _this = this;
        this.element.click(function() {
            _this._trigger("testTrig");
        });
    },
  });
})(jQuery);

// Instantiate widget on .full
$('.full').BearCal({
    testTrig: function() {
        console.log("testTrig event: full");
    }
});

// Instantiate widget on .mini
$('.mini').BearCal({
    testTrig: function() {
        console.log("testTrig event: mini");
    }
});

こちらのサンプル:http://jsfiddle.net/NrKVP/13/

4

1 に答える 1

6

偶発的なグローバル変数があります:

_this = this;

これは、プラグインの両方のインスタンスがコンストラクターthisの同じ(グローバル)に配置されることを意味します。_thisその結果、すべてのプラグインインスタンスthisが最後のバインドにを使用します。あなたはこれを求めている:

var _this = this;

デモ: http: //jsfiddle.net/ambiguous/9NQNz/

于 2012-10-25T04:25:59.270 に答える