jQuery:绑定到已经发生的事件并自动运行处理程序

时间:2012-01-16 23:19:09

标签: javascript-events jquery

参考下面的代码,有没有办法绑定"测试2" " my_event"的处理程序事件" my_event"之后已经发生了以便"测试2"是马上跑?

<!DOCTYPE html>
<html>
  <head>
    <title>tests</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
  </head>
  <body>
    <script type="text/javascript">

      $(document).bind("my_event", function () {
          alert("test 1");
      });

      $(document).trigger("my_event");

      $(document).bind("my_event", function () {
          alert("test 2");
      });

    </script>
  </body>
</html>

2 个答案:

答案 0 :(得分:2)

结帐jQuery's special events。每次添加"facebookReady"事件时,都会调用add回调,您可以选择立即调用回调或根据某些条件推迟回调。在这个例子中,我正在查看是否存在全局FB属性来决定是否调用它。

jQuery.event.special.facebookReady = {
    add: function(handleObject) {
        if (window.FB) {
            handleObject.handler.call(this);
        }
    }
};

设置特殊事件的回调后,像往常一样绑定事件。

$(document).bind('facebookReady', ..);

根据FB是否加载,它可能会立即触发,也可能不会立即触发。

结帐example

答案 1 :(得分:0)

将警报值作为触发器中的额外参数传递,以便您可以重复使用处理程序代码,如

$(document).bind("my_event", function (e,param) {
    alert(param);
      });

$(document).trigger("my_event","alert1");
$(document).trigger("my_event","alert2");

http://jsfiddle.net/Bs5Db/52/