2012-05-23 4 views
8

Ich benutze derzeit pjax und es funktioniert gut, aber ich muss zwei jQuery-Funktionen ausführen, eine vor pjax lädt die neue URL und eine nach der neuen URL geladen wird, wie kann ich das tun?Wie wird jQuery vor und nach einem PJAX-Ladevorgang ausgeführt?

Ich habe die folgenden zwei Varianten versucht, aber keiner scheint zu funktionieren?

Erster Versuch:

$("a").pjax("#main").live('click', function(){ 

    //Function Before Load 
    // Function After Load 
}) 

Zweiter Versuch:

$("body").on("click", "a", function(){ 

    //Function Before Load 

    $(this).pjax("#main"); 

    //Function After Load 

    return false; 
}); 
+1

Versuchen Sie, was in dem [docs] ist (https://github.com/defunkt/jquery-pjax#events)? –

+0

@ChristianVarga Ich habe diesen Teil verpasst, dachte, der jQuery-Abschnitt sei beendet, nachdem er auf die Serverseite gegangen sei. – Dan

Antwort

24

Wie sie sagt, in ihrem doc herepjax Brände zwei Ereignisse für das, was Sie brauchen,

pjax werden zwei Ereignisse ausgelöst auf dem Container haben Sie es aufgefordert, Ihre Antwort Körper Int laden o:

pjax: start - Wird ausgelöst, wenn eine pjax ajax-Anfrage beginnt.

pjax: end - Wird ausgelöst, wenn eine pjax ajax-Anfrage endet.

Und das Codebeispiel für diesen

$('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 }); 
2
$("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; 
});