2013-08-11 3 views
0

Je suis assez nouveau avec jQuery.
Essayez d'écrire un script simple pour le faire glisser et le faire glisser vers le bas.Problème de script Jquery

<script type="text/javascript"> 
$(document).ready(function() { 
    if ($('header').is(':visible')) { 
     $('header').hide(function() { 
      $(".masterhead").mouseover(function() { 
       $("header").slideDown('slow'); 
      }); 
     }); 
    } else { 
     $('.masterhead').mouseout(function() { 
      $('header').slideUp('slow'); 
     }); 
    } 

}); 
</script> 

Le problème est quand je suis en train de le voir dans le navigateur, il garde glisser vers le haut et vers le bas pas le beahvior correct j'espérais, j'ai essayé avec slideToggle mais la même chose se produit. J'ai essayé beaucoup de solutions de ce site mais la même chose.
J'apprécierai n'importe quelle aide avec ceci.

+0

Je pense que vous devriez utiliser mouseenter et mouseLeave à la place, parfois mouseover et mouseout est exécutée lorsque vous déplacer une souris sur l'élément. – jcubic

+0

qu'est-ce qu'un en-tête? est l'en-tête d'un tag? Êtes-vous sûr de ne pas vouloir utiliser #header ou .header? –

Répondre

0

vérifier cela, mais assurez-vous que vous ne voulez pas utiliser $('#header') ou $('.header') au lieu de $('header'):

$(document).ready(function() { 
     $('header').hide(); 
     $(".masterhead").hover(
     function() { 
      $("header").slideDown('slow'); 
     }, 
     function() { 
      $("header").slideUp('slow'); 
     }); 
    }); 
+0

merci beaucoup, cela fonctionne mieux, mais parfois il continue à faire la même chose de haut en bas, mais le bon je veux, glissez vers le bas si l'en-tête n'est pas visible et arrêtez et glissez –

+0

je div ok pouvez-vous fournir un JSFIDDLE –

+0

je peux faire mieux, vous pouvez le vérifier là-bas [démo] (http://spotlight.comuv.com) c'est démo –

0

essayer. Son travail

$(document).ready(function() { 
     $('#header').hide(); 
      $(".masterhead").mouseover(function() { 
       $("#header").slideDown('slow'); 
      }); 

     $('.masterhead').mouseout(function() { 
      $('#header').slideUp('slow'); 
     }); 


}); 

et voici l'exemple html

<div class="masterhead">hello </div> 
<div id="header">hi</div> 

Voici le jsFiddle * Demo *

Hope this helps. Je vous remercie.

0

Mise à jour

Je le fixe, j'ai trouvé une solution ici. Je ne sais pas si la meilleure pratique mais semble fonctionner comme j'espérais. J'ajoute .stop (true, true) avant d'appeler la fonction slideDown ou slideup.

Solution

<script type="text/javascript"> 

      $(document).ready(function() { 
       $('header').hide(); 
       $(".masterhead").hover(
       function() { 
        $("header").stop(true,true).slideDown('slow'); 
       }, 
       function() { 
        $("header").stop(true,true).slideUp('slow'); 
       }); 
      }); 

     </script> 
0

plus easilly utilisant slideToggle:

$(document).ready(function() { 
       $('header').hide(); 
       $('.masterhead').hover(function(){ 
         $('header').slideToggle('slow'); 
       }); 

});