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 click 事件的另一种方法是将 render 方法从 jQuery onReady 事件中移出,并移到代码中已经存在的单击处理程序“clicked”中。您只需在创建视图时将“#someElement”作为“el”属性传递。

在这里做了一个快速的 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 回答