Сценарий выполняется до HTML, созданный в Jquery? - PullRequest
1 голос
/ 01 сентября 2011

Насколько я понимаю, jQuery - это сценарий, который будет выполнен, как только документ будет готов.

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

   window.App=new AppView;

и сразу после этой строки у меня есть

   alert($("#field").val());

, где $ ("# field") является частью шаблонакоторый был динамически сгенерирован в HTML

И NULL был предупрежден.

Но если я установлю setTimeout для выполнения оповещения, я увижу значение.Обе строки кода находятся в jQuery {}.

Может кто-нибудь объяснить, почему 2-я строка выполняется до выполнения всего в 1-й строке.

PS Это строка, которая генерирует шаблон

     $("body").html($.tmpl("temp", data)); 

Ответы [ 3 ]

1 голос
/ 01 сентября 2011

Я думаю, я только что понял проблему. Вы сказали, что ваш код связан с получением запроса GET с сервера? Ну, это означает асинхронный код. Другими словами, вот что происходит:

You call new AppView
    - Inside AppView, a XHR is created, sending a GET request to server
    - Code finishes inside AppView, and returns to calling function
You call alert field val (not created yeat)
Some time later, the GET request is finnished
    - Inside callback-function for GET-request. Your field get's created.
1 голос
/ 01 сентября 2011

Вы должны использовать jQuery только тогда, когда DOM готов:

window.App=new AppView;

$(document).ready(function() { // Triggered when the whole DOM is ready
  alert($("#field").val());
});
0 голосов
/ 01 сентября 2011

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

$(function() {
   $('body').html($.tmpl("temp", data));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...