我有一个简单的小部件,它的结构是这样的:
(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'
注意。更新是通过两个 Rails gem“jquery-rails”和“jquery-ui-rails”完成的。