Подтвердить что ты не робот

Повторно запустить приложение Javascript на загруженном содержимом ajax

Я бы хотел, чтобы весь загруженный контент AJAX в моем приложении оценивался моим приложением JQuery script, так же, как и нормальный загруженный контент. например JQuery сканирует загруженный контент AJAX для селекторов, например "модальные боковые ссылки" и т.д.

Весь мой JavaScript находится в обычном document.ready, который отлично работает для обычных загруженных HTTP-страниц:

$(document).ready(function(){
  // my apps javascript
});

Я хотел бы использовать что-то вроде .ajaxComplete, чтобы запустить повторный запуск всего, что содержится в document.ready, чтобы оценить недавно загруженный контент AJAX для селекторов jquery.

$(document).ajaxComplete(function(){
  // Re-run all my apps javascript
})

Есть ли какой-нибудь код, который я могу внести в .ajaxComplete, чтобы сделать это?

Надеюсь, это имеет смысл, пожалуйста, дайте мне знать, если это не так, и я отредактирую детали вопроса.

4b9b3361

Ответ 1

вы можете инкапсулировать все в свой document.ready в функцию и снова вызвать эту функцию для повторной привязки

или...

лучшим подходом было бы использовать методы live() и delegate() jQuery, чтобы все текущие и будущие элементы, соответствующие этим селекторам, также были связаны с этими событиями.

с использованием live(): http://api.jquery.com/live/

$('.clickme').live('click', function() {
    //all elements that exist now and elements added later
    //with this class have this click event attached
});

пример с использованием delegate(): http://api.jquery.com/delegate/

$("table").delegate("td", "hover", function(){
    //all current and future td elements in all current tables
    //have this hover event attached
});

Ответ 2

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