Повторно запустить приложение 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, чтобы сделать это?
Надеюсь, это имеет смысл, пожалуйста, дайте мне знать, если это не так, и я отредактирую детали вопроса.
Ответы
Ответ 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
Что вам нужно сделать, это определить свой код в функции вместо анонимного. Анонимные функции не могут использоваться повторно, но если вы пишете функцию, то эта функция может быть привязана к нескольким событиям.