Outils pour utilisateurs

Outils du site


devweb:jquery:listener (lu 8980 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

devweb:jquery:listener [07-01-2016 16:21]
edmc73 créée
devweb:jquery:listener [07-01-2016 16:56] (Version actuelle)
edmc73
Ligne 1: Ligne 1:
 ====== Listener / écouteur ====== ====== Listener / écouteur ======
  
-Pour gérer des événements tel que le clic ou le mouse over, on utilise généralement le code+Admettons un tableau classique comme ça avec un bouton qui par défaut est transparent 
 +<code html> 
 +<table> 
 +  <tr> 
 +    <td> 
 +      <button class="menu transparent">Menu</button> 
 +    </td> 
 +  </tr> 
 +</table> 
 +</code> 
 + 
 +On veut que lorsque la souris passe sur une ligne du tableau, on fasse apparaitre le bouton en supprimant la class transparent 
 + 
 +On utilise généralement le code pour ajouter un écouteur sur le hover
  
 <code javascript> <code javascript>
   $('tr').toggle(function(){   $('tr').toggle(function(){
-      $(this).find('.btn-group').removeClass('transparent');+      $(this).find('.menu').removeClass('transparent');
     },function(){     },function(){
-      $(this).find('.btn-group').addClass('transparent');+      $(this).find('.menu').addClass('transparent');
     }     }
   );   );
 </code> </code>
  
-Sauf que si on rajoute du code en live avec .append() par exemple, ce code ne sera pas concerné par le toggle()+Sauf que si on rajoute du code en live avec .append() par exemple 
 +<code javascript> 
 +$('table').append('<tr><td><button class="menu transparent">Menu</button></td></tr>'); 
 +</code> 
 + 
 +Alors l'effet de hover ne fonctionne pas...
  
-Pour éviter ce problème, il faut utiliser .on() comme ceci+Pour éviter ce problème, il faut utiliser .on() en prenant soin de le mettre sur l'élément parent du tr dans notre cas, comme ceci
  
  
 <code javascript> <code javascript>
-  $('tr').on({+  $('table').on({
     mouseenter: function(){     mouseenter: function(){
-      $(this).find('.btn-group').removeClass('transparent');+      $(this).find('.menu').removeClass('transparent');
     },     },
     mouseleave: function(){     mouseleave: function(){
-      $(this).find('.btn-group').addClass('transparent');+      $(this).find('.menu').addClass('transparent');
     }     }
-  });+  },"tr");
 </code> </code>
devweb/jquery/listener.1452180098.txt.gz · Dernière modification: 07-01-2016 16:21 de edmc73