【问题标题】:Jquery click event is fired on document loadJquery click 事件在文档加载时触发
【发布时间】:2012-09-02 10:36:59
【问题描述】:

这是我的代码:

<!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/

【问题讨论】:

    标签: jquery backbone.js


    【解决方案1】:

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

    在这里做了一个快速的 jsBin 演示:http://jsbin.com/ugafod/4

    这种方法似乎更“骨干”,但两种方式都可以正常工作。

    【讨论】:

    • 谢谢。这就是我一直在寻找的。一种骨干式的方法。
    【解决方案2】:

    什么按钮?您的render 事件更改#someElement 内容。您的按钮在被点击之前就消失了。

    【讨论】:

    • +1 这实际上是正确的。示例中的 HTML 被替换,所以没有按钮!
    【解决方案3】:

    您使用了自调用函数。就是这样 - 浏览器将在加载 html 页面的那部分后立即运行该功能。如果你想推迟它,你需要将它与一个动作相关联,例如:

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

    我为你创建了一个jsFiddle。这应该是你所追求的。

    【讨论】:

    • $(function () { var myView = new MyView(); myView.render(); $("#someElement").html(myView.el); }); ^ 是自调用的。 Good explanation of self invoking functions
    • 是的,但这是 DOM 就绪功能,最好是自调用!
    • 不是自调用函数:$(function(){...}); 等价于$(document).ready(function(){...});
    • 我在我原来的帖子中为你创建了一个 jsFiddle,我想这就是你所追求的 :)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多