0

我有一个网络应用程序,我使用 Backbone.js。

在登录视图中,我使用 jQuery UI 按钮。在我调用的模板代码$(".btn").button();中没有问题。

但是当我想在用户单击按钮并调用后采取行动时:

$('#btnSubmit').button({
   disabled : true,
   label : "Logging in..."
});

我收到错误消息:“未捕获的类型错误:对象 [对象对象] 没有方法‘按钮’ ”(从 chrome devTools 控制台复制)。

奇怪的是,如果我在 chromeDevtools 控制台中运行此代码行,它会完美运行!我认为这与 DOM 以及我在偶数触发时所处的状态有关。 知道有什么问题吗?

一些细节:

Including the jQuery UI library:
define([
   'jQuery',
   'jQueryui',
/*...*/
], function($, jQueryui,...) {
var loginView = Backbone.View
   .extend({
/*...*/
   events : {
      "click #btnSubmit" : "login"
      },
/*...*/
   login : function() {
      $('#btnSubmit').button({
         disabled : true,
         label : "Logging in..."
         });
   },
}
});

   return new loginView;
});

编辑:

我尝试了斯蒂芬解决方案并尝试使用:

this.$el.find('#btnSubmit').button({
     disabled : true,
     label : "Logging in..."
});

还是行不通。我认为这意味着我无法访问所有 jQuery UI 功能。

4

2 回答 2

0

我发现了错误:我应该以这种方式使用传递给函数的 jQueryUI 引用:

jQueryui('#btnSubmit').button({
    disabled : true,
    label : "Logging in..."
});
于 2012-06-26T11:24:57.583 回答
0

要尝试的一件事是像这样查找元素:

this.$el.find('#btnSubmit').button({
     disabled : true,
     label : "Logging in..."
});

即使文档没有附加到 DOM,您也可以查找它。这是我唯一的猜测,因为我假设所有 jquery 导出都设置正确。

于 2012-06-24T07:15:34.483 回答