2012-10-25 59 views
4

當使用_trigger方法來觸發事件時,我碰到了一個我一直打但未能正確掌握的障礙。jQuery Widget Factory _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/

回答

6

你有一個意外的全局變量:

_this = this; 

這意味着,該插件的兩個實例把自己的this到相同的(全球)_this在構造。結果是所有插件實例都使用this作爲最後一個綁定。你想這樣的:

var _this = this; 

演示:http://jsfiddle.net/ambiguous/9NQNz/

相關問題