2008-12-03 6 views
0

Est-ce que quelqu'un sait pourquoi le code suivant n'a d'effet que dans FF?Animer pour onclick sur le bouton soumettre ne fonctionne que dans FF (pas IE ni OP)

$(document).ready(function() { 
    $('#powerSearchSubmitButton').click(function() { 
     startLoad(); 
    }); 
}); 

function startLoad() { 
    $('.message').each(function(i) { 
     $(this).animate({ opacity: 0 }, 500);   
    }); 
}; 
+0

Pourquoi code commenté et les déclarations si là-bas? Ce sera mieux si vous fournissez le code minimum pour reproduire le problème. –

+0

À peu près un dup de http://stackoverflow.com/questions/333911/jquery-animate-doesnt-work-as-expected-in-ie – leppie

+0

Ceci est javascript? Que font les signes du dollar? – Albert

Répondre

1

*** Mise à jour ****

Exemple ici http://pastebin.me/4937b07714655 de 1 'option qui consiste à tenir un compte des messages et exécuter le rappel d'animation que le dernier message.


pourquoi ne vous retournez faux à partir du clic ou event.preventDefault() et dans le rappel d'animation soumettre le formulaire

$(document).ready(function() { 
    $('#powerSearchSubmitButton').click(function(ev) { 
     startLoad(); 
     ev.preventDefault(); 
    }); 
}); 

function startLoad() { 
    var $messages=$('.message'); 
    var count=$messages.length -1; 
    $messages.each(function(i) { 
     $(this).animate({ opacity: 0 }, 500, i == count ? submitForm:null);   
    }); 
}; 

function submitForm(){ 
    $('#yourForm').submit(); 
} 
+0

Excellente idée, je reviendrai avec des commentaires quand j'y serai :) –

+0

En attachant un formulaire submitForm au rappel de chaque message .message, j'obtiendrais un certain nombre de soumissions. Puis-je en quelque sorte implémenter un rappel de toute la fonction startLoad (je devrais le renommer animateLoad ou quelque chose) –

+0

boris un nombre de façons dont vous pouvez compter le nombre d'éléments $ ('. Message'). Longueur et garder un compteur de sorte que vous savoir ehn le dernier a tiré, puis appeler l'événement submitForm. Vous pouvez même utiliser un setTimeout après 750ms dire quand vous pouvez être sûr que 99% de l'animation est terminée. Voir lequel fonctionne le mieux – redsquare

1

Essayez d'ajouter 'return false;' à votre fonction de clic. J'ai mis en place une démo on my site et cela fonctionne très bien dans IE6 et Opera.

+0

Mais si je renvoie false, le formulaire ne sera plus soumis .. –

+0

Aussi, merci d'aller la longueur de l'hébergement d'une page de démonstration –

+0

Pas de problème, désolé je ne pouvais pas dire si c'est ce que tu devais faire. Vous avez la réponse maintenant - envoyez-la via javascript une fois toutes les animations terminées. – roborourke

Questions connexes