События на DOM-элементах, которые еще не созданы, в Javascript? - PullRequest
1 голос
/ 13 июля 2010

У меня есть модуль Javascript, следующий Javascript:

EntryController = function$entry(args) {

    MainView();

    $('#target').click(function() {
      alert('Handler called!');
    });

}

MainView () имеет обратный вызов, который создает кнопку #target.Из-за обратного вызова код подхватит и пропустит остальную часть кода $ ('# target') ... до создания #target.В этом случае событие никогда не подключается к #target.Если я установлю точку останова на $ ('# target'), которая даст обратному вызову достаточно времени, чтобы вернуться и построить #target, при нажатии play все будет работать, как и ожидалось.с этим?Я хотел бы, чтобы все события происходили в контроллере, чтобы он мог выбирать, в какое представление отправить его.

Я думал о размещении всего $ ('# target').) и вместо оповещения («Обработчик вызван!»);Я бы поместил ссылки на EntryController.TargetEventRaise (), но это стало выглядеть как устойчивый код.Какой лучший способ подойти к этому?

1 Ответ

2 голосов
/ 13 июля 2010

Вам нужны live обработчики событий jQuery , которые будут обрабатывать событие в каждом элементе, который соответствует селектору, независимо от того, когда элемент был создан.

Например:

$('#target').live('click', function() {
    alert('Handler called!');
});

В качестве альтернативы, вы можете заставить саму функцию MainView принять обратный вызов и добавить обработчик в обратный вызов.Затем вы можете вызвать обратный вызов в MainView внутри его обратного вызова.

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