2010-10-27 13 views
9

Si vous cliquez sur le bouton cliquez ici pour commander ici: http://www.game onglove.com/gog/test3.html, puis cliquez sur le même bouton dans la fenêtre de la boîte à lumière qui apparaît, une requête ajax va s'exécuter en utilisant $ .post().jquery ajaxStart ne fonctionne pas

Vous pouvez appuyer sur "continuer à magasiner" pour revenir à la fenêtre précédente de la boîte à lumière pour recommencer rapidement.

Si j'exécute le code jquery ici dans la console (chrome ou firefox), alors cela fonctionne correctement. Il ne fonctionnera pas là où il est dans le code source:

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

Pourquoi ça va fonctionner à partir de la console, mais pas dans son emplacement actuel dans la source? Comment puis-je faire fonctionner ça?

Répondre

21

Cet élément de se créé plus tard, vous devez lier après sa création, ou un peu plus simple qu'affecter le gestionnaire à document dès le début:

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

Merci! Travaillé parfaitement. J'ai essayé d'utiliser "document" la nuit dernière et je me demandais pourquoi mon navigateur insistait pour charger la page suivante en dehors de la visionneuse. Tout ce que j'ai oublié de faire, c'est utiliser "#cboxLoadingGraphic" au lieu de "this" que j'ai réalisé dès que j'ai vu votre message. :) – Lauren