2012-10-25 32 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/

相关问题