Web アプリがあり、Backbone.js を使用しています。
ログイン ビューでは、jQuery UI ボタンを使用します。テンプレートコードでは$(".btn").button();
、問題なく呼び出します。
しかし、ユーザーがボタンをクリックして呼び出した後に行動したい場合:
$('#btnSubmit').button({
disabled : true,
label : "Logging in..."
});
「Uncaught TypeError: Object [object Object] has no method 'button'」というエラーが表示されます (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 機能にアクセスできないということだと思います。