2009-03-25 6 views
76

Est-il possible de masquer automatiquement un élément dans une page Web 5 secondes après le chargement du formulaire à l'aide de jQuery?Elément de masquage automatique jQuery après 5 secondes

Fondamentalement, j'ai

<div id="successMessage">Project saved successfully!</div> 

que je voudrais disparaître au bout de 5 secondes. J'ai regardé l'interface utilisateur jQuery et l'effet de masquage mais j'ai un peu de mal à le faire fonctionner comme je le veux.

<script type="text/javascript"> 
     $(function() { 
      function runEffect() { 

       var selectedEffect = 'blind'; 

       var options = {}; 

       $("#successMessage").hide(selectedEffect, options, 500); 
      }; 

      $("#successMessage").click(function() { 
       runEffect(); 
       return false; 
      }); 
     }); 
    </script> 

J'aimerais la fonction de clic à supprimer et ajouter une méthode de temporisation qui appelle la runEffect() au bout de 5 secondes.

beaucoup de gracias!

Répondre

91
$(function() { 
    // setTimeout() function will be fired after page is loaded 
    // it will wait for 5 sec. and then will fire 
    // $("#successMessage").hide() function 
    setTimeout(function() { 
     $("#successMessage").hide('blind', {}, 500) 
    }, 5000); 
}); 

Remarque: Afin de vous rendre le travail de la fonction jQuery à l'intérieur setTimeout vous devez l'envelopper dans

function() { ... } 
+1

J'ai essayé ce code sur mon site web. Mais ça n'a pas marché. Autre que ce script js, quoi d'autre ai-je besoin pour le faire fonctionner? S'il vous plaît conseiller! Je vous remercie! – Jornes

+1

@Jornes assurez-vous que ce script est situé après '' sur votre page. –

1

Vous utilisez setTimeout sur vous fonctionnez runEffect:

function runEffect() { 
    setTimeout(function(){ 
     var selectedEffect = 'blind'; 
     var options = {}; 
     $("#successMessage").hide(selectedEffect, options, 500) 
    }, 5000); 
} 
177
$('#selector').delay(5000).fadeOut('slow'); 
+2

Soyez averti que cette solution se casse $ ('html'). Cliquez sur (function() {// \t \t cliquez en dehors \t \t $ ("sélecteur de #").disparaître(); \t}); – max4ever

+0

Merci pour cette solution simple. – Ron

+0

Merci solution très simple! –

1

Je pense, vous pourriez aussi faire quelque chose comme ...

setTimeout(function(){ 
    $(".message-class").trigger("click"); 
}, 5000); 

et faire vos effets animés sur l'événement clic ...

$(".message-class").click(function() { 
    //your event-code 
}); 

Salutations,

7

Vous pouvez essayer:

setTimeout(function() { 
    $('#successMessage').fadeOut('fast'); 
}, 30000); // <-- time in milliseconds 

Si vous avez utilisé ce alors votre div sera cacher après 30 secondes. J'ai également essayé celui-ci et cela a fonctionné pour moi.

0

Voici comment vous pouvez définir le délai d'expiration après avoir cliqué.

$(".selectorOnWhichEventCapture").on('click', function() { 
    setTimeout(function(){ 
     $(".selector").doWhateverYouWantToDo(); 
    }, 5000); 
}); 

// 5000 = 5sec = 5000 millisecondes

0

S'il vous plaît noter que vous devrez peut-être afficher div texte à nouveau après qu'il a disparu. Vous devrez donc également vider et afficher de nouveau l'élément à un moment donné.

Vous pouvez le faire avec 1 ligne de code:

$('#element_id').empty().show().html(message).delay(3000).fadeOut(300); 

Si vous utilisez jQuery vous n'avez pas besoin setTimeout, du moins pas à cacher automatiquement un élément.

Questions connexes