0

我有一个简单的小部件,它的结构是这样的:

(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”完成的。

4

1 回答 1

0

我查看了 jQuery UI Widgets,并将语法更改为:

(function ($, undefined) {
    $.widget("ui.newslettersignup", {
        _create: function() {
        },
        options: {}
    });
})(jQuery);

然后它起作用了。我仍然找不到关于它为什么被改变的注释,或者为什么它不再起作用了。

于 2013-07-01T17:50:32.750 回答