JQuery триггер и привязка к событию при загрузке страницы? - PullRequest
2 голосов
/ 04 августа 2011

Как я могу запускать и привязывать к событию после загрузки страницы?

У меня проблема в том, что в одном месте при загрузке страницы я запускаю событие:

//producer.js
pageLoaded(){
   var e = jQuery.Event("eventA");
   $("body").trigger(e);
   ...}

и в другом привязываю к нему:

//consumer.js
pageLoaded(){
   $("body").bind("eventA", function(args){console.log("Got it!");} );
   ... }

Проблема в том, что событие запускается впервые (при загрузке страницы) - потребитель его не видит. Во второй раз происходит событие, однако все в порядке!

Я предполагаю, что это потому, что событие на самом деле запускается ДО того, как потребитель начинает его слушать.

Есть ли хорошая практика, которой следует следовать при создании «триггеров» и «слушателей» событий - которые должны работать как при загрузке страницы, так и позже?

Ответы [ 3 ]

1 голос
/ 04 августа 2011

Если при запуске события нет слушателей, ничего не произойдет, поэтому вы не видите ничего на первом триггере.

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

Использование чего-то вроде RequireJS позволит мне сначала загрузить один файл javascript, а затем другой.

Так что я могу сделать producer.js зависимым от consumer.js

0 голосов
/ 04 августа 2011

Похоже, вам нужно контролировать порядок вызовов document.ready () .. возможно, ответы на этот вопрос или эта статья может помочь вам

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