Приостановите события готовности jQuery, пока не завершатся несколько обновлений HTML DOM - PullRequest
0 голосов
/ 12 июля 2011

Я использую jQuery, чтобы AJAX отправлял и получал ответы JSON, содержащие несколько идентификаторов DOM и соответствующие фрагменты HTML, которые мне нужно обновить.Таким образом, я делаю несколько вызовов jQuery.html, например $('#id1').html('...'); $('#id2').html('...');.

. Для каждого фрагмента, содержащего обработчик ready, например $(function(){...});, событие немедленно запускается.Я бы предпочел позвонить один раз после всех обновлений.

Есть ли способ сделать это?

Из того, что я читал до сих пор, jQuery.trigger () может использоваться для ручного запуска ready событие.Но мне нужно было сохранить и восстановить текущие обработчики или отложить доставку событий, перезаписав внутренние компоненты jQuery.Последнее - это то, чего я хотел бы избежать, может быть, есть лучшая практика, которую я еще не знаю?

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Посмотрите на функцию holdReady.

См .: http://api.jquery.com/jQuery.holdReady/

1 голос
/ 12 июля 2011

Я бы начал с перемещения js-файлов в ваших представлениях во внешние js-файлы, где они могут быть вызваны из функций обратного вызова ajax.

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

Нет необходимости в готовых инструкциях, если вы добавляете js перед закрывающим тегом body. Лучший совет, который я могу дать, - начать четко указывать в жизненном цикле своих приложений, что именно вызывается при вызове js, вместо того, чтобы полагаться на злоупотребление готовым выражением.

Ребекка Мерфи написала несколько очень хороших статей / презентаций об этом.

...