Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2996 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [resolu][JQuery] show, hide et empilement d'events

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu][JQuery] show, hide et empilement d'events

n°2246110
naeco
Buddy Rich Big Band
Posté le 15-12-2014 à 12:07:16  profilanswer
 

Bonjour,
J'ai mis sur une page un div1 qui s'affiche lors d'un survol d'un div2, pas trop compliqué :

Code :
  1. $("#permalinkListener" ).mouseenter(function() {
  2.    $("#permalink" ).show( "slow" );
  3.   }).mouseleave(function() {
  4.    $("#permalink" ).delay( 3000 ).hide( "slow" );
  5.   });


 
Mais le problème, c'est que si pendant les 3000ms de pause on fait pleins de survols du div 2, alors JQuery empile (à juste titre) les demandes, et les joue les unes après les autres...
alors j'ai tenté d'ajouter clearQueue(), mais sans effet,
 
Alors j'ai voulu faire ça :
 

Code :
  1. $("#permalinkListener" ).mouseenter(handlerMouseEnterPermalien).mouseleave(handlerMouseleavePermalien);
  2. var handlerMouseEnterPermalien = function() {
  3.  $("#permalinkListener" ).unbind("mouseenter", handlerMouseEnterPermalien);
  4.  $("#permalink" ).show( "slow" );
  5. }
  6. var handlerMouseleavePermalien = function() {
  7.  $("#permalinkListener" ).unbind("mouseleave", handlerMouseleavePermalien);
  8.  $("#permalink" ).delay( 3000 ).hide( "slow" );
  9.  $("#permalinkListener" ).delay( 3000 ).bind("mouseenter", handlerMouseEnterPermalien);
  10.  $("#permalinkListener" ).delay( 3000 ).bind("mouseleave", handlerMouseleavePermalien);
  11. }


 
Mais ça ne coupe pas l'écoute pendant les 3000 milisecondes...
 
Existe il un moyen ?
 
Je vous remercie de votre retour


Message édité par naeco le 15-12-2014 à 14:29:39
mood
Publicité
Posté le 15-12-2014 à 12:07:16  profilanswer
 

n°2246115
naeco
Buddy Rich Big Band
Posté le 15-12-2014 à 14:07:12  profilanswer
 

La solution (que je ne trouve pas belle) :  

Code :
  1. var hov = 1;
  2. $("#permalinkListener" ).mouseenter(function(){
  3.     clearTimeout();
  4.     hov = 1;
  5. $("#permalink" ).show( "slow" );
  6. });
  7. $("#permalinkListener" ).mouseleave(function(){
  8.         hov = 0;
  9.         setTimeout(function(){
  10.                 if(hov == 0){
  11.                     $("#permalink" ).hide( "slow" );
  12.                 }
  13.         }, 3000);
  14. });


 
Alors que contre toute atteinte, ça ne marche pas :

Code :
  1. var isHover = 1;
  2.   $("#permalinkListener" ).mouseenter(function() {
  3.    isHover = 1;
  4.    $("#adressePermalien" ).select();
  5.    $("#permalink" ).show( "slow" );
  6.   }).mouseleave(function() {
  7.    isHover = 0;
  8.    if(isHover == 0){
  9.     $("#permalink" ).delay( 3000 ).hide( "slow" );
  10.    }
  11.   });


 
je suis toujours intéressé par d'autres solutions, et sur pourquoi la version full jquery juste au dessus ne fonctionne pas :o

n°2246118
naeco
Buddy Rich Big Band
Posté le 15-12-2014 à 14:18:25  profilanswer
 

Et pour info, forcer le show et le hide avec :

Code :
  1. $("#permalink" ).delay( 3000 ).hide( "slow", "swing", false);


 
ne change rien :o
 
mais ça semble expliquer :
 
http://stackoverflow.com/questions [...] g-together
 
Ca serait dû à delay()


Message édité par naeco le 15-12-2014 à 14:27:01

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [resolu][JQuery] show, hide et empilement d'events

 

Sujets relatifs
Questions Jqueryproblème avec jquery et fonction load()
JQuery> Lancer un script sur un élément créé par JQueryJQuery pour carte personnalisée (PHP)
Récupếrer valeur qui change dans un formulaire en JQUERYJquery - aide pour page d'accueil complexe
Jquery append() sur textareaBackbone et event doubleclick
[jquery] .change + .eachparser un fichier json avec jquery
Plus de sujets relatifs à : [resolu][JQuery] show, hide et empilement d'events


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR