jQuery remontée d'événements: Obtenir les éléments d'origine du passage de la souris (pour la ligne de la table de mise en évidence).
J'essaie de réduire mon 'onmouseover' écouteurs d'événement dans ma table (dans lequel je mets en évidence les lignes sur le vol stationnaire). Je veux le faire en joignant un écouteur d'événement pour l'ensemble de la table à la place de chaque <tr> (c'est la façon dont je l'ai maintenant). La raison en est que IE est la réaction très lente et la seule réponse que j'ai trouvé c'était de réduire le nombre des écouteurs d'événement.
Exemple de code:
<table id="myTable">
<tr>
<td>Somedata</td>
</tr>
<tr>
<td>Somedata 2</td>
</tr>
<tr>
<td>Somedata 3</td>
</tr>
</table>
Dans ce scénario, si j'ai passez la souris sur le deuxième <tr>, je comprends que le "onmouseover" événement bulles de tr à la table.
Comment pourrais-je trouver dans mon jQuery $('#matable').événement mouseover qui tr a plané et le changement de sa classe css?
Modifier: L'idée de ce qui vient de cette question (mais malheureusement pas de code source dans la réponse): L'accélération de Multiples Événements OnMouseOver dans IE
OriginalL'auteur Alex | 2009-09-23
Vous devez vous connecter pour publier un commentaire.
Il est appelé événement délégation.
Vous êtes à l'aide de jQuery qui le rend trivial de trouver le déclenchement
<tr>
élément de l'événement, viaproche
:closest
était en fait écrit de l'événement, la délégation de ce genre. C'est ce quelive()
utilise en interne.le
e
paramètre est leevent
objet généré par lamouseover
. Chaque action de l'utilisateur génère un de ces événements. Voir quirksmode.org/js/events_properties.htmlps j'ai édité la réponse à l'utilisation d'une meilleure var nom que
"e"
😉Ne pouvez-vous pas simplement utiliser
$(this)
au lieu de$(event.target)
?dans ce cas est équivalent à $('#matable'); cas.la cible est le plus bas de l'élément sur la chaîne, afin de trouver la plus proche <tr> va correspondre à l'élément que vous souhaitez.
OriginalL'auteur Crescent Fresh
Vous pouvez joindre l'événement mouseover à la table, mais à chaque fois que vous passer la souris n'importe quel enfant de l'élément de la table en fonction de feu.
Qui vous permettra d'obtenir de tr élément qui a plané.
$('#myTable tr').mouseover(function(e){ $(e.target); });
La préférence est généralement d'avoir un peu de délégué ou le bouillonnement des gestionnaires d'événements, plutôt que des charges de l'individu gestionnaires câblé directement à des éléments, ce n'est donc pas une meilleure option que celui indiqué.
Je suis d'accord! Cela a été posté un temps, avant que je savais ce que je sais maintenant. Jamais trop vieux pour apprendre ey!
OriginalL'auteur Colin