2010-10-27 21 views
9

Se si fa clic sul pulsante per fare clic qui per ordinare qui: http://www.game onglove.com/gog/test3.html, quindi fare clic sullo stesso pulsante nella finestra lightbox che si apre, verrà eseguita una richiesta ajax $ .post().jquery ajaxStart non funziona

È possibile premere "continua shopping" per tornare alla finestra lightbox precedente per ricominciare rapidamente.

Se eseguo il codice jquery qui nella console (chrome o firefox), quindi funziona correttamente. Semplicemente non funziona da dove è nel codice sorgente:

$('#cboxLoadingGraphic').ajaxStart(function() { 
$(this).show(); 
$('#cboxLoadedContent').hide(); 
}).ajaxStop(function() { 
$(this).hide(); 
$('#cboxLoadedContent').fadeIn('slow'); 
}); 

Perché funzionerà dalla console, ma non nella sua posizione attuale nel sorgente? Come faccio a far funzionare questo?

risposta

21

Quel elemento sempre creato in seguito, si deve legare dopo che è creato, o un po 'più semplice basta associare il gestore per document fin dall'inizio:

$(document).ajaxStart(function() { 
    $('#cboxLoadingGraphic').show(); 
    $('#cboxLoadedContent').hide(); 
}).ajaxStop(function() { 
    $('#cboxLoadingGraphic').hide(); 
    $('#cboxLoadedContent').fadeIn('slow'); 
}); 
+1

Grazie! Ha funzionato perfettamente Ho provato a usare "documenti" la notte scorsa e ho continuato a chiedermi perché il mio browser insistesse nel caricare la pagina successiva al di fuori del lightbox. Tutto quello che ho dimenticato di fare è stato utilizzare "#cboxLoadingGraphic" invece di "this" che ho realizzato non appena ho visto il tuo post. :) – Lauren