0

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 機能にアクセスできないということだと思います。

4

2 に答える 2

0

試してみる1つのことは、次のような要素を検索することです。

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

ドキュメントがDOMに添付されていなくても、検索することができます。すべてのjqueryエクスポートが適切に設定されていると想定しているので、これが私の唯一の推測です。

于 2012-06-24T07:15:34.483 に答える
0

私は間違いを見つけました:私はこの方法で関数に渡すjQueryUI参照を使用する必要がありました:

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