2012-05-23 9 views
8

Attualmente sto usando pjax e funziona benissimo ma ho bisogno di eseguire due funzioni jQuery, una prima che pjax carichi il nuovo url e una dopo il nuovo url sia caricato, come posso fare?Come eseguire jQuery prima e dopo un caricamento pjax?

Ho provato le seguenti due varianti ma nessuna sembra funzionare?

Primo tentativo:

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

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

Secondo tentativo:

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

    //Function Before Load 

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

    //Function After Load 

    return false; 
}); 
+1

Hai provato ciò che è nelle [doc] (https://github.com/defunkt/jquery-pjax#events)? –

+0

@ChristianVarga Ho perso quella parte, ho pensato che la sezione jQuery fosse finita dopo essere passata sul lato server. – Dan

risposta

24

Come si dice nella loro doc herepjax incendi due eventi per quello che ti serve

pjax sparerà due eventi sul contenitore hai chiesto di caricare il tuo corpo della risposta int o:

pjax: start - Attivato quando inizia una richiesta di ajax pjax.

pjax: end - Fired quando termina una richiesta ajax pjax.

E l'esempio di codice per questo

$('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; 
}); 
Problemi correlati