jQuery $ (документ) .ready (функция () - PullRequest
0 голосов
/ 29 октября 2009

Сценарий выглядит следующим образом.

На родительской странице у нас есть тег div с идентификатором и именем "placeHolder".

  • Шаг 1: «placeHolder» заполняется контентом Page1 посредством вызова ajax.
  • Шаг 2: «placeHolder» заполняется содержимым Page2 посредством вызова ajax.
  • Шаг 3: «placeHolder» снова заполняется контентом Page1 посредством вызова ajax.

Когда страницы загружаются в первый раз, $ (document) .ready (функция () вызывается, но начиная с шага 3, готовая функция не вызывается.

Любое направление будет оценено.

Ответы [ 6 ]

2 голосов
/ 29 октября 2009

Я думаю, вы подразумеваете, что элементы, которые вводятся в div через ваш вызов ajax, теряют свои обработчики событий. В этом случае вам нужно будет делегировать эти события, используя live, или привязать их к вашим элементам в обратном вызове success вашего ajax-метода. Блок $(document).ready() будет выполняться только при первой загрузке страницы.

Скажем, например, один из элементов, который заменяется через ваш ajax-вызов, является якорем с class="something":

$('a.something').live("click", function() {
    alert('hello');
});

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

1 голос
/ 29 октября 2009

$(document).ready(...) - это только , вызываемое при загрузке документа: если вы загружаете контент через Ajax, это событие будет срабатывать только один раз при первой загрузке страницы. Поэтому вам лучше всего поступить так, как предлагает karim79 , и использовать live или обратный вызов успеха вашего метода Ajax.

1 голос
/ 29 октября 2009

вы должны использовать complete callback в вашем вызове ajax

0 голосов
/ 15 февраля 2014

Ответы выше о причине, по которой $ (document) .ready не работает, верны

Но $ (document) .live устарел в jquery 1.9. http://jquery.com/upgrade-guide/1.9/#live-removed

Вместо этого вы должны использовать $ (document) .on Документация здесь: http://api.jquery.com/on/

function myOnLoaded()
{
   // do my load thing here
}

$(document).on("click", "a.something", myOnLoaded) 
0 голосов
/ 29 октября 2009

«Когда страницы загружаются в первый раз выполняется последовательно при начальной загрузке страницы. Итак, ДА - это правильное описание того, как это работает.

$ (document) .ready () - HANDLER СОБЫТИЯ - другими словами: документ готов к доступу и скрипты завершены. Другие события происходят после этого (и раньше, но для этого jQuery «готов», когда готов.

Только к вашему сведению, действует также следующее:

function myOnLoaded()
{
   // do my load thing here
}

$(document).ready(myOnLoaded);

Вызывает myOnLoaded при возникновении события (готовности).

0 голосов
/ 29 октября 2009

Насколько я понимаю, $ (document) .ready) вызывается только тогда, когда браузер завершает начальный GET веб-страницы.

Если вы хотите запустить функцию, вы можете использовать обратный вызов успеха в вашем вызове Ajax.

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