Как запустить jQuery до и после загрузки pjax?
В настоящее время я использую pjax, и он прекрасно работает, но мне нужно запустить две функции jQuery: одну до того, как pjax загрузит новый URL, а другую после загрузки нового URL, как я могу это сделать?
Я пробовал следующие два варианта, но ни один из них не работает?
Первая попытка:
$("a").pjax("#main").live('click', function(){
//Function Before Load
// Function After Load
})
Вторая попытка:
$("body").on("click", "a", function(){
//Function Before Load
$(this).pjax("#main");
//Function After Load
return false;
});
2 ответа
Решение
Как они говорят в своем документе здесь pjax
запускает два события для того, что вам нужно
pjax запустит два события в контейнере, который вы попросили загрузить ваше тело ответа:
pjax: start - запускается, когда начинается запрос pjax ajax.
pjax: end - запускается, когда заканчивается запрос ajax pjax.
И пример кода для этого
$('a.pjax').pjax('#main')
$('#main')
.on('pjax:start', function() { //do what you want to do before start })
.on('pjax:end', function() { //after the request ends });
$("body").on("click", "a", function(){
$(this).pjax("#main");
$('a.pjax').pjax('#main')
$('#main').on('pjax:start', function() { /* your code before ajax load */ });
$('#main').on('pjax:end', function() { /* your code after ajax load */ });
return false;
});