Outils pour utilisateurs

Outils du site


devweb:jquery:listener (lu 14345 fois)

Listener / écouteur

Admettons un tableau classique comme ça avec un bouton qui par défaut est transparent

<table>
  <tr>
    <td>
      <button class="menu transparent">Menu</button>
    </td>
  </tr>
</table>

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

  $('tr').toggle(function(){
      $(this).find('.menu').removeClass('transparent');
    },function(){
      $(this).find('.menu').addClass('transparent');
    }
  );

Sauf que si on rajoute du code en live avec .append() par exemple

$('table').append('<tr><td><button class="menu transparent">Menu</button></td></tr>');

Alors l’effet de hover ne fonctionne pas…

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

  $('table').on({
    mouseenter: function(){
      $(this).find('.menu').removeClass('transparent');
    },
    mouseleave: function(){
      $(this).find('.menu').addClass('transparent');
    }
  },"tr");
devweb/jquery/listener.txt · Dernière modification: 07-01-2016 16:56 de edmc73