【问题标题】:My custom jQuery widget doesn't work after upgrading to jQuery UI 1.10升级到 jQuery UI 1.10 后,我的自定义 jQuery 小部件不起作用
【发布时间】:2013-07-01 15:07:46
【问题描述】:

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

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

【问题讨论】:

  • 查看 jQuery Migrate。它可以告诉您哪些功能已更改/已弃用。

标签: jquery ruby-on-rails jquery-ui


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多