2

これが私のコードです:

<!DOCTYPE html>
<html>

  <head></head>

  <body>
    <div id="someElement">
      <button id="someButton">Click Me</button>
    </div>
    <script src="jquery-1.4.4.min.js"></script>
    <script src="underscore-min.js"></script>
    <script src="backbone-min.js"></script>
    <script>
      MyView = Backbone.View.extend({
        events: {
          "click #someButton": "clicked"
        },
        clicked: function (e) {
          e.preventDefault();
          alert("I was clicked!");
        },
        render: function () {
          var html = "generate some HTML, here";
          $(this.el).html(html);
        }
      });

      $(function () {
        var myView = new MyView();
        myView.render();
        $("#someElement").html(myView.el);
      });
    </script>
  </body>

</html>

http://jsfiddle.net/LfGtu/

私の質問は、ボタンのクリックを待ってクリックイベントを発生させるにはどうすればよいですか?

(ちなみに、コードの一部はhttp://lostechies.com/derickbailey/2011/11/09/backbone-js-object-literals-views-events-jquery-and-el/から取得されています)

4

3 に答える 3

5

jQueryクリックイベントを追加する代わりに、renderメソッドをjQuery onReadyイベントから、コード内にすでにあるクリックハンドラー「クリック」に移動することもできます。ビューを作成するときに、「el」プロパティとして「#someElement」を渡す必要があります。

ここで簡単なjsBinデモを作成しました:http://jsbin.com/ugafod/4

このアプローチはより「バックボーンっぽい」ように見えますが、どちらの方法でも問題なく機能します。

于 2012-09-04T14:11:24.737 に答える
2

どのボタン?イベントの内容renderが変わり#someElementます。クリックする前にボタンが消えています。

于 2012-09-02T10:49:16.860 に答える
1

自己呼び出し機能を使用しました。それが本質です-ブラウザは、htmlページのその部分をロードするとすぐに関数を実行します。延期する場合は、次のようなアクションに関連付ける必要があります。

$('my div or button or whatever you like').click(function(){
    // Function to run here.
});

私はあなたのためにjsFiddleを作成しました。これはあなたが求めているものでなければなりません。

于 2012-09-02T10:40:39.643 に答える