Comment puis-je lier tous les événements sur un élément du DOM?
Comment puis-je lier tous les événements (c'est à dire click
, keypress
, mousedown
) sur un élément du DOM, à l'aide de jQuery, sans inscription chacun individuellement?
Exemple:
$('#some-el').bind('all events', function(e) {
console.log(e.type);
});
Vous devez vous connecter pour publier un commentaire.
il ya un moyen simple (mais pas précis) moyen de tester tous les événements:
puis de lier tous les événements comme ceci:
.slice(2)
- je l'ai corrigé.Vous pouvez également redéfinir jQuery.de l'événement.déclencheur d'attraper chaque événement, mais, je pense que, de cette façon, n'est bon que pour explorer API externe, pas de production:
jQuery changé la façon dont il enregistre les événements, il y a un couple de façons d'extraire la liste selon la version que vous utilisez. J'ai encapsulé de la "dernière" version d'un plugin, mais essentiellement, vous voulez:
Cela donne une liste imbriquée de tous les événements liés, regroupés par la "base" de l'événement (pas de noms).
Cependant, je viens de réaliser que vous voulez que tout le natif de jQuery événements - vous pourrait inspecter
$.event
, qui a certains d'entre eux, en vertu de$.event.special
, mais le accepté de répondre à peut toujours être votre meilleur pari. Vous pouvez aussi regarder ce que jQuery listes que possible la liaison des fonctions.Si vous voulez lier plusieurs événements à la même fonction, il suffit de les séparer par des espaces.
exemple Simple sur jsfiddle
Voici une petite extension pour jQuery:
Utilisation:
Aussi, vous pouvez simplement utiliser le navigateur de la console (à partir de cette réponse):
Je ne pense pas que jQuery prend en charge un caractère générique (il serait difficile et semée d'embûches), mais la liste des événements standard est fini (bien que malheureusement un peu dispersé à travers le DOM2 événements spec, le DOM2 spécification HTML, et la DOM3 événements spec), vous pouvez toujours simplement d'en faire la liste. jQuery permet de donner plusieurs noms à lier (délimité par un espace), par exemple:
onwheel
événement.J'ai pris la Marque Coleman script et amélioré un peu pour mes besoins.
Je tiens à partager avec vous: http://jsfiddle.net/msSy3/65/