0

可能な限り調査して試しましたが、ボタンをクリックしても起動しない理由がわかりません。ビュー レンダー HTML の色を変更すると、変更が表示されるため、ビュー レンダーは正常に機能しますが、ログイン ボタンをクリックしても何も表示されません。js コンソールにエラーは表示されません。で試した

button#login_buttonそして#login_buttonそしてlogin_button- すべて何もありません。私たちは何が欠けていますか?助けてくれてありがとう

  SessionView = Backbone.View.extend({
    el: ('#session'),
    initialize:function () {
        this.render();
    },
    render:function () {
      if (!session) {
        $(this.el).html(
          "<button id=\"login_button\" class=\"login_button black\">"+
          "Login"+
          "</button>");
        return this;
      } else {
        $(this.el).html(
          "<button id=\"logout_button\" class=\"login_button black\">"+
            "Logout</button>");
        return this; 
      }
    },
    events: {
        "click login_button" : "login",
        "click logout_button": "logout"
    },
    login: function(){
      alert("login");
      console.log("login dialog");
      //var loginView = new LoginView();
      //loginView.render().showModal();
    },
    logout: function(){
      alert("You Have Logged Out");
    }

  });
4

1 に答える 1

2

セレクターでは「#」を保持する必要があります。

events: {
        "click #login_button" : "login",
        "click #logout_button": "logout"
    }

アップデート

newこのバックボーン ビュー クラスで DOM を使用する準備が整うのを待ちますか? あなたのボタンがhtml呼び出しによって変更されるという事実は、あなたがそうするということを意味します.

それを確認したらすぐに、this.$elの代わりに使用する必要があり$(this.el)ます。

それでも機能しない場合は、イベント ブロッキングを検索し、ID が一意であることを確認してください。

この非常に単純なJSFiddleは、あなたが私たちに伝えているのと同じ条件で動作します。

于 2013-04-20T16:08:36.620 に答える