2012-05-23 24 views
8

Actualmente estoy usando pjax y funciona muy bien pero necesito ejecutar dos funciones de jQuery, una antes de que pjax cargue la nueva url y una después de que se cargue la nueva url, ¿cómo puedo hacer esto?¿Cómo ejecutar jQuery antes y después de una carga pjax?

He intentado las siguientes dos variaciones, ¿pero ninguna parece funcionar?

Primer intento:

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

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

Segundo intento:

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

    //Function Before Load 

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

    //Function After Load 

    return false; 
}); 
+1

¿Probaste lo que hay en los documentos [] (https://github.com/defunkt/jquery-pjax#events)? –

+0

@ChristianVarga Me perdí esa parte, pensé que la sección de jQuery terminaba después de pasar al lado del servidor. – Dan

Respuesta

24

Como se dice en su documento herepjax incendios dos eventos para lo que necesita

pjax se disparará dos eventos en el contenedor que le solicitó que cargue su cuerpo de respuesta int o:

pjax: inicio - Se enciende cuando comienza una solicitud de pjax ajax.

pjax: end: se activa cuando finaliza una solicitud de pjax ajax.

Y el ejemplo de código para este

$('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; 
}); 
Cuestiones relacionadas