将代码从jQuery UI 1.7升级到1.8失败

时间:2016-06-13 14:24:45

标签: javascript jquery-ui jquery-widgets

我有一些旧的jquery UI代码,我想升级到今天的标准。由于我的代码是为jQuery UI 1.7.3编写的,所以我决定在发布时升级到代码版本。可在此处找到发布列表:https://jqueryui.com/upgrade-guide/

因此,如果我打开1.8升级指南,我可以看到更改了什么。到现在为止还挺好。据我所知,以下更改适用于我的代码:

  • 将_init()重命名为_create()
  • 将_setData()重命名为_setOption()
  • 删除了_getData(),因为它永远不会被覆盖
  • $ .tidget()现在接受一个基本小部件作为第二个参数扩展;默认为$ .Widget

虽然我不确定如何处理_getData()。我必须将其替换为_Option_getOption吗?这在指南中并不清楚。

然而,更改我的代码会导致非工作应用程序。我希望有人可以帮助我。

这是(部分)我的旧代码:

_init: function () {
      var index = this.options.index;
      var num_ranks = this._RANKS.length;
      var suit = parseInt(index/num_ranks);
      this._setData('suit', suit);
      this._setData('rank', index - (suit * num_ranks));
      this.element.addClass('container')
               .append('<div class="downturned">');
    },
    _suit: function () { return this._getData('suit'); },
    _rank: function () { return this._getData('rank'); },

进一步在代码中:

   $.widget('ui.card', Card); //Create the widget
   $ui.card.getter = "is_downtunred";

以上我已经(使用指南)更改为:

_create: function () {
      var index = this.options.index;
      var num_ranks = this._RANKS.length;
      var suit = parseInt(index/num_ranks);
      this._setOption('suit', suit);
      this._setOption('rank', index - (suit * num_ranks));
      this.element.addClass('container')
               .append('<div class="downturned">');
    },
    _suit: function () { return this._getOption('suit'); },
    _rank: function () { return this._getOption('rank'); },

进一步在代码中(这里没有改变任何内容):

   $.widget('ui.card', Card); //Create the widget
   $ui.card.getter = "is_downtunred";

但这会制动应用程序。谁知道为什么?我错过了什么?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

this._getData()替换this.option()解决了我的问题