2009-11-27 10 views
2

J'ai une fonction courte qui devrait afficher des messages sur un site Web.jQuery messages de file d'attente

function showHint() { 
    $('#notify').html('message text').show('slide', {direction: 'right'}, 500); 
} 

Et il existe une autre fonction qui cache les messages. Le problème est que si j'appelle cette fonction plus d'une fois, elle essaie d'afficher tous les messages en même temps et tout se casse. Je veux appeler la fonction deux fois, puis elle devrait mettre en file d'attente les animations et afficher un message après l'autre. La fonction doit être appelée plus d'une fois en même temps mais affichée l'une après l'autre. Le prochain message devrait être montré quand les sapins se cachent.

Comment pourrais-je résoudre le problème? Serait bien!

Répondre

1

Voici un mini plugin personnalisé que j'ai utilisé dans le passé qui enchaîne un tas d'animations les unes après les autres.

// Good for serializing animations 
$.fn.chain = function(fn) { 
    var elements = this; 
    var i = 0; 
    function nextAction() { 
    if (elements.eq(i)) fn.apply(elements.eq(i), [nextAction]); 
    i++; 
    } 
    nextAction(); 
}; 

Vous pouvez l'appeler comme si (Here's an example of it in use):

$(document).ready(function() { 
    $('li').chain(function(nextChain) { this.slideToggle("fast", nextChain); }); 
}); 

La fonction que vous passez à chain passe une autre fonction que vous devez appeler quand vous êtes vers le bas avec un cycle. Dans l'exemple ci-dessus, nous passons simplement la fonction nextChain comme rappel au slideToggle.

+0

C'est une bonne solution, mais ça ne m'aide pas à sortir de mon problème. Le problème est que le texte du message est modifié avant que le premier message est caché. – dominik

+0

dominik, Vous n'avez pas à tout enchaîner après le chargement du document. Vous pouvez tout enchaîner après que le texte du message a été modifié. –

0

Votre fonction showhint pourrait simplement commencer par masquer la notification et une fois celle-ci terminée, le rappel serait la fonction showhint existante, qui changerait le texte et l'afficherait. Le code ne devrait pas être difficile compte tenu de ce que vous avez déjà fait.

0

ne pouvez-vous pas simplement utiliser un plugin de notification? voici deux (one, two) qui sont assez spiffy.

+1

Oui, pnotify est assez bon. http://plugins.jquery.com/project/pnotify – dominik