Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t在Backbone.js视图中调用jQuery UI函数_Javascript_Jquery Ui_Javascript Events_Backbone.js - Fatal编程技术网

Javascript Can';t在Backbone.js视图中调用jQuery UI函数

Javascript Can';t在Backbone.js视图中调用jQuery UI函数,javascript,jquery-ui,javascript-events,backbone.js,Javascript,Jquery Ui,Javascript Events,Backbone.js,我有一个web应用程序,我使用Backbone.js 在登录视图中,我使用jqueryui按钮。 在模板代码中,我调用$(“.btn”).button()没有问题 但当我想在用户点击按钮并呼叫后采取行动时: $('#btnSubmit').button({ disabled : true, label : "Logging in..." }); 我得到一个错误:“未捕获类型错误:对象[Object Object]没有方法‘按钮’”(从chrome devTools控制台复制) 奇怪

我有一个web应用程序,我使用Backbone.js

在登录视图中,我使用jqueryui按钮。 在模板代码中,我调用
$(“.btn”).button()没有问题

但当我想在用户点击按钮并呼叫后采取行动时:

$('#btnSubmit').button({
   disabled : true,
   label : "Logging in..."
});
我得到一个错误:“未捕获类型错误:对象[Object Object]没有方法‘按钮’”(从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;
});
编辑:

我尝试了Stephen solution并尝试使用:

this.$el.find('#btnSubmit').button({
     disabled : true,
     label : "Logging in..."
});
仍然不起作用。
我想这意味着我无法访问所有jQuery UI功能。

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

this.$el.find('#btnSubmit').button({
     disabled : true,
     label : "Logging in..."
});
即使文档没有附加到DOM,您也可以查找它。这是我唯一的猜测,因为我假设所有jquery导出都已正确设置。

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

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

感谢你说的“jquery导出设置正确”是什么意思?看起来你在使用requirejs。jQuery不只是对requirejs“起作用”(至少上次我检查时是这样),还需要做一些工作来确保requirejs知道在包含jQuery时返回什么。jQueryUI也是如此。因此,假设您已经解决了这个问题。在定义视图之前,请尝试使用“console.log($.browser)”。你应该得到一些关于你的浏览器的信息。如果在控制台中得到未定义的/null/empty响应,您就知道jquery没有正确连接正在工作。问题只出在jQueryUIWell身上,不幸的是,我也被难倒了。我需要看更多的代码,jquery ui是如何连接的,requirejs的配置是什么样子的,等等。我最后想到的是,在我使用jquery ui的项目中,我们在配置中指定了一个“shim:{shim:{'lib/jquery ui':{deps:['jquery']}}}不确定这是否有帮助。。但是值得一试。