J'essaie de charger #content d'une URL via AJAX en utilisant jQuery dans #primary. Il se charge mais ne disparaît pas. Que fais-je de mal?
$('.menu a').live('click', function(event) {
var link = $(this).attr('href');
$('#content').fadeOut('slow', function(){
$('#primary').load(link+' #content', function(){
$('#content').fadeIn('slow');
});
});
return false;
});
Merci beaucoup pour votre aide.
En fait, j'ai pu le faire en appliquant l'effet au div wrapper à la place ...
$('#primary').fadeOut('slow', function(){
$('#primary').load(link+' #content', function(){
$('#primary').fadeIn('slow');
});
});
Juste ça:
$('.element').load('file.html',function(){}).hide().fadeIn();
Ou pour ajouter ce comportement par défaut dans la fonction load ():
$.fn.load_=$.fn.load;
$.fn.load=function(){
return $.fn.load_.apply(this,arguments).hide().fadeIn();
}
Vous pouvez également utiliser .load () dans un effet de fondu comme celui-ci
$("#container").fadeOut("slow").load('data.html').fadeIn('slow');
Lorsque vous utilisez load()
jQuery utilise en interne html()
pour mettre à jour votre élément. Cela signifie que vous ne pouvez pas lui appliquer d'animation, car vous mettez simplement à jour la propriété innerHTML
de l'élément.
À la place, vous devrez écrire votre propre demande AJAX pour obtenir le nouveau HTML, le mettre dans l'élément, puis appeler fadeIn()
.
$('.menu a').live('click', function(event) {
var link = $(this).attr('href');
$('#content').fadeOut('slow', function() {
$.get(
link +' #content',
function(data) {
$("#primary").html(data).fadeIn('slow');
},
"html"
);
});
return false;
});
J'ai utilisé get()
ici, mais vous pouvez tout aussi bien utiliser post()
ou ajax()
.
De plus, juste pour noter, live()
est obsolète. Vous devez plutôt utiliser delegate()
ou, si vous utilisez jQuery 1.7+, on()
.
J'ai trouvé que faire quelque chose comme ça fonctionnait bien ...
$ ('# Div'). FadeOut (0) .fadeIn (). Load ('foo.blah.html');
C'est le meilleur moyen de le faire apparaître/disparaître naturellement, d'abord vous cachez votre conteneur, puis vous chargez votre page dans ce conteneur (il sera chargé mais masqué) puis utilisez simplement la fonction Jquery .fadeIn () et il l'affichera en ajoutant l'effet spécial.
$(".myClass").click(function ()
{
$("#Container").hide();
$("#Container").load("magasin.html");
$("#Container").fadeIn();
});