2009-10-29 5 views
0

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

На родительской страницы мы имеем Div тег с идентификатором и название "PlaceHolder"

  • Шаг 1..: «PlaceHolder» наполнен содержанием Page1 через вызов Ajax
  • Шаг 2:. «PlaceHolder» наполнен содержанием страницы Page2 через вызов Ajax
  • Шаг 3:. «PlaceHolder» снова наполнен содержанием Page1 через AJAX

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

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

+0

Вы должны добавить некоторый код вашего кода javascript, чтобы получить лучшие решения. –

ответ

1

вы должны использовать complete обратный вызов в Ajax вызова

2

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

Скажет, например, один из элементов, заменяются через Ajax вызов якорь с class="something":

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

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

0

Я понимаю, что $ (document) .ready) вызывается только тогда, когда браузер завершает его начальное ПОЛУЧЕНИЕ веб-страницы.

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

1

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

0

«Когда страницы загружаются в первый раз $ (документ) .ready (функция() вызывается, но с шага 3 вперед функция готовности не называется» - сделав предположение, что 1-3 выполняются в последовательности на начальной загрузке страницы. Таким образом, ДА - это правильное описание того, как это работает.

$ (document) .ready() - СРЕДСТВО ОБЯЗАТЕЛЬСТВ - Иными словами: Документ готов к использованию .. доступ и скрипты завершения загрузки Другие события происходят после этого (и раньше, но для этого, JQuery «готов», когда готов

Просто FYI следующее справедливо:

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

$(document).ready(myOnLoaded); 

Это вызывает myOnLoaded, когда происходит событие (готово).

0

Ответы выше о причине, почему $ (document) .ready не работает, являются правильными.

Но $ (документ) .live устарел в JQuery 1,9 http://jquery.com/upgrade-guide/1.9/#live-removed

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

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

$(document).on("click", "a.something", myOnLoaded) 
Смежные вопросы