次のような構造の単純なウィジェットがあります。
(function ($, undefined) {
$.ui.newslettersignup = {
_create: function () {
console.log('dosomething');
},
destroy: function () {
// if using jQuery UI 1.8.x
$.Widget.prototype.destroy.call(this);
// if using jQuery UI 1.9.x
//this._destroy();
},
options:{
}
};
$.widget("ui.newslettersignup", $.ui.newslettersignup);
})(jQuery);
しかし、jQuery と JQuery-UI を 1.8.3 から 1.10 にアップグレードした後、エラーが発生し続けます。
Uncaught TypeError: Cannot read property 'length' of undefined jquery.js:632
jQuery.extend.each jquery.js:632
$.widget jquery.ui.widget.js:123
(anonymous function) ui.newslettersignup.js:47
(anonymous function)
アップデート ノートを見ようとしましたが、jQuery.UI.Widget の変更についての言及は見当たりませんでした。
ブラウザでデバッグすると、$.ui.newslettersignup が利用可能であることがわかりますが、$('something').newslettersignup(); を実行しています。エラーが表示されます:
Object [object Object] has no method 'newslettersignup'
注意。更新は、2 つの Rails gem "jquery-rails" と "jquery-ui-rails" によって行われます。