jQuery: привязка к событию, которое уже произошло, и автоматический запуск обработчика - PullRequest
2 голосов
/ 17 января 2012

Обращаясь к приведенному ниже коду, есть ли способ привязать обработчик «test 2» к событию «my_event» после «my_event», чтобы сразу запустить «test 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 ]

2 голосов
/ 17 января 2012

Оформить заказ Специальные события jQuery . Каждый раз, когда добавляется событие "facebookReady", вызывается обратный вызов add, и вы можете выбрать немедленный вызов или отложить его в зависимости от какого-либо условия. В этом примере я смотрю на наличие глобального свойства FB, чтобы решить, следует ли его вызывать.

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

После настройки обратного вызова специального события свяжите событие, как обычно.

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

В зависимости от того, был ли загружен FB, он может срабатывать или не срабатывать немедленно.

Оформить заказ пример .

0 голосов
/ 17 января 2012

передать значение предупреждения как дополнительный параметр в триггере, чтобы вы могли повторно использовать код обработчика, например

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...