5

Tout d'abord, je m'excuse ... J'ai posté cette question avant, mais j'ai mal expliqué. J'ai du mal à brancher hoverIntent dans le JavaScript suivant ... Je en ai besoin pour remplacer les fonctions mouseenter et mouseleave ci-dessous. Juste pour être clair, je demande de l'aide parce que je ne suis pas très bon avec la syntaxe JavaScript. Le deuxième extrait de code ci-dessous semble fonctionner, mais il ne fait rien et semble complètement mort dans Internet Explorer. J'utilise ce qui suit pour les autres navigateurs, mais il ne fonctionne pas dans Internet Explorer.Remplacer MouseOver avec .hoverIntent

$('#top_mailing').hoverIntent(
    function() { 
    $("#top_mailing_hidden").stop().slideDown('slow'); 
    }, 
    function() { 
    $("#top_mailing_hidden").stop().slideUp('slow'); 
    } 
); 
+2

Avez-vous des erreurs JS dans IE? –

+1

Juste testé hoverIntent & jQuery 1.4.1 avec IE. Fonctionne bien. Cela vous anime-t-il? Est-ce que ça marche dans d'autres navigateurs? – user113716

+0

Avez-vous testé ce code: $ ('# top_mailing') hoverIntent (fonction () { $ ("# top_mailing_hidden") stop() slideDown ('slow'); ..} Fonction () {. $ ("# top_mailing_hidden"). Stop(). SlideUp ('lente'); } ); – Brian

Répondre

3

Je pense avoir trouvé le problème.

Vous appelez deux fois $('#top_mailing').hoverIntent(.... Une fois en bas du fichier hoverintent_r5.js, et une fois dans votre fichier custom.js. Apparemment, IE n'aime pas ça. Débarrassez-vous de l'un ou de l'autre, et ça devrait aller. Probablement mieux de garder tout votre code dans votre propre fichier js. Sinon, c'est facile à oublier.

ÉDITION: Éviter le problème stop().

Je préfère Animer:

$('#top_mailing').hoverIntent(
    function() { 
    $("#top_mailing_hidden").stop().animate({height:150},'slow'); 
    }, 
    function() { 
    $("#top_mailing_hidden").stop().animate({height:0},'slow'); 
    } 
); 

De cette façon, lorsque vous avez besoin d'arrêter et de changer de direction, il saura toujours où aller. (0 et 150 dans l'exemple ci-dessus.)

Veuillez noter que ceci nécessite top_mailing_hidden pour avoir clip:auto; overflow:hidden ensemble. Étant donné que vous utilisez hoverIntent, les appels à stop() peuvent ne pas être nécessaires car hoverIntent est destiné à éviter ces événements mouseover involontaires.

légèrement hors sujet:

garder une chose à l'esprit avec votre mise en œuvre. Comme il s'agit d'un formulaire à remplir, les utilisateurs vont probablement (sans même y penser) déplacer leur souris quand ils commencent à taper. Cela entraînera la disparition du formulaire. Dans cet esprit, vous pouvez reconsidérer un événement mouseout. Vous pouvez toujours le faire glisser vers le haut lorsque l'utilisateur soumet le formulaire, avec un bouton facultatif 'Annuler' ou 'Fermer'.

+0

Awesome! Puisque vous regardez le site actuel ... Essayez ceci - Si vous passez la souris sur la liste déroulante, puis passez la souris. Maintenant, déplacez rapidement la souris pendant que l'animation slideUp se termine. Vous devriez le voir abandonner là où il se fait prendre au milieu de l'animation et ensuite passer au-dessus de celui-ci, il ne tombera pas ou ne tombera que partiellement. C'est ce que j'essayais de corriger avec les commandes .stop() et .dequeue() mais c'est toujours un problème. Des pensées? – Brian

+0

Heureux que ça marche. En ce qui concerne le nouveau problème, j'ai remarqué que lorsque vous utilisez slideup/slidedown, ou d'autres fonctions comme ça, il peut perdre la trace de sa destination si vous appelez stop(). Personnellement, je ne les utiliserais pas. J'utiliserais plutôt la méthode animate() de jQuery. De cette façon, vous êtes en train d'encoder la destination. Je vais éditer ma réponse pour vous montrer ce que je veux dire. – user113716

+0

LOL! La fonction .animate est encore plus glitchy que slideDown. Vous pouvez le voir sur le site. – Brian