2010-03-07 5 views
1

fonction checkSession() { $ .ajax ({url: "session.php", succès: function (données) { if (data == 1) {var postFilen = 'msg.php'; $. post (postFilen, function (données) { $ (". msg"). html (données) .find (". message2"). fadeIn ("lent") } else { $ ('. msg'). hide();} }}); // setInterval ('checkSession()', 1000);.Où placer le timeout() fadeout?

maintenant, je veux mettre à fadeOut .msg après 5 secondes, il a été démontré Comment puis-je fais ceci .. J'ai essayé:

function checkSession(){ 
    $.ajax({url: "session.php", success: function(data){ 
     if(data == 1){ 
      var postFilen = 'msg.php'; 
      $.post(postFilen, function(data){ 
      $(".msg").html(data).find(".message2").fadeIn("slow") 
        setTimeout(function() { 
    $('.msg').fadeOut('slow'); 
     }, 5000); 
      }); 
     }else{ 
      $('.msg').hide(); 
     } 
    }}); 
// setInterval('checkSession()',1000); 
} 

Mais le message apparaît coutume après le 1er temps ..

Répondre

2

Essayez de travailler avec la méthode delay: http://api.jquery.com/delay/

$('#foo').slideUp(300).delay(800).fadeIn(400); 

je votre cas, quelque chose comme:

$(".msg") 
    .html(data) 
    .find(".message2") 
    .fadeIn("slow") 
    .parent('.msg') 
    .delay(5000) 
    .fadeOut('slow') 

[modifier: exemple fixe]

[Edit2: nouvel exemple]


Celui-ci semble fonctionner très bien ici:

<div class="msg"></div> 
<p> 
    Some text <br /> <a id="bloup" href="">show message</a> 
</p> 

puis

$(function() { 
     $("#bloup").click(function(e) { 
      e.preventDefault(); 

      var data = "<span class='message2'>Hello world</span>"; 

      $(".msg") 
       .show() 
       .html(data) 
       .find('.message2') 
       .fadeIn('slow') 
       .parent('.msg') 
       .delay(2000).fadeOut('slow'); 
     }) 
    }); 
+0

Ne fonctionne pas .. 1ère fois il fadeout en même temps il allait montrer, puis deuxième et le reste du temps il n'a pas apparaître – Karem

+0

Corriger, le parent et le retard où inversé. J'ai corrigé mon exemple. –

+0

+1 Un bon usage de 'delay'. –

0

Essayez d'abord d'écrire un code plus propre pour nous de comprendre votre problème de mieux, la fonction de rappel de votre $.post manquant }); ces caractères à sa fin sur le premier extrait sur le dessus, et l'indentation est mauvaise en deuxième.

Ensuite, consultez ces liens pour comprendre l'utilisation de setTimeout.

https://developer.mozilla.org/en/DOM/window.setTimeout

http://www.w3schools.com/jsref/met_win_settimeout.asp

Et à votre question:

si vous mettez var t = avant setTimeout(function() { cela fonctionnerait comme prévu,

espère que ces aide, Sinan.

+0

pourquoi devrait-il fonctionner quand je fais le setTimeout à un var nommé "t"? – Karem