カスタム イベントを jQuery プラグインに追加できません。
イベントをトリガーする非常に単純な jQuery プラグインを作成しましたが、添付されたハンドラーが適切に起動しません: http://jsfiddle.net/FhqNf/2/
(function($) {
var my_plugin = function(link, opts) {
var $this = this, img, o={};
defaults = {
color: 'rgb(255, 0, 0)'
};
$.extend(this, $.fn, {
init : function () {
o = $.extend(defaults, opts);
link.on('click', $this.changeColor);
},
changeColor : function (e) {
if( link.css('color') == o.color)
link.css('color', 'blue');
else
link.css('color', o.color);
$this.triggerChange();
},
triggerChange : function () {
$this.triggerHandler('custom', {test: 'ok', color: o.color} );
}
});
this.init();
};
$.fn.my_plugin = function(opts) {
return new my_plugin(this, opts);
};
次に、プラグインを使用して「カスタム」イベント ハンドラーに関数をアタッチすると、そのイベントは発生しません。
var test1 = $('#test1').my_plugin();
test1.on('custom', function (data) { console.log(data); alert('test1') } );
編集: 回避策は、「リンク」dom オブジェクトにイベントをアタッチ/トリガーすることですが、プラグイン インスタンスにアタッチされたイベントをトリガーしたいと考えています。それは可能ではありませんか?
前もって感謝します。