2010-03-18 8 views
2

Je développe une application tactile qui, en dehors de tout le reste, enregistre la quantité de fois que l'écran est utilisé pour que l'utilisateur puisse se rappeler de nettoyer l'écran après un nombre prédéfini de clics.Ajout d'un événement click supplémentaire à chaque élément (JavaScript/jQuery)

J'ai les fonctions de clic écrites joliment, tout ce dont j'ai besoin maintenant est de m'assurer que la fonction est appelée en un clic.

J'imagine que $('*').click(function() { //do something }); accomplirait mon objectif, mais est-ce le meilleur moyen? En outre, cela écraserait-il d'autres fonctions de clic assignées aux éléments?

Répondre

2

Il ajouterait, pas l'emporter, mais une meilleure solution serait:

$(document).click(function() { 
    //do something 
}); 

Depuis clics bulle, écouter juste en haut au niveau du document avec un événement au lieu de créer des événements sur tous les éléments en dessous. Pour la partie override ... vous pouvez ajouter autant de handlers que vous voulez, ils vont simplement s'exécuter dans l'ordre où ils étaient liés.

+0

Merci pour la réponse, Nick. Cela risque-t-il de déclencher plusieurs fois ma fonction de clic en un clic, à cause du bouillonnement? Comment voulez-vous éviter cela? Peut-être passer l'événement à la fonction, et arrêter de bouillonner une fois qu'il a été exécuté une fois? – Gausie

+0

Aussi, si cela est utilisé sur document prêt, cela s'appliquera-t-il aux éléments insérés dans le DOM? – Gausie

+0

@Gausie - Cela ne le causera pas plusieurs fois alors que '" * "' le ferait. Dans le cas de '*', tous les éléments qu'ils traversent le déclencheraient ... mais ils ne peuvent atteindre le document qu'une seule fois tout en haut, donc vous n'avez pas à vous en soucier avec l'approche '$ (document)'. –

1

La meilleure méthode consiste à affecter le gestionnaire d'événements à document lui-même. La bulle d'événements et le document peuvent tous les attraper, tout en conservant l'origine de l'événement.

+0

Merci pour la réponse, mais Nick est arrivé plus vite. Encore, +1 de toute façon – Gausie