Écoutez tous les événements onClick de tous les enfants dans jQuery

Je peux écouter tous les événements de clic mrow d'un div, en utilisant sometihng comme

$('#mydiv').on('click', 'mrow', function() {
    var moo = $(this).attr('id');
    if (handlers[id]) {
        event.stopPropagation();
        handlers[id]();
}

Puis-je utiliser une configuration similaire pour écouter sur tous les événements de clic de Tous les enfants de la div (sans configuration, des écouteurs séparés pour chaque type)? Une partie de l'arbre a des fonctions de gestionnaire et d'autres non, et je veux que ces requêtes se propagent dans la div, jusqu'à ce que celle qui a un gestionnaire soit trouvée.

22
demandé sur Guest 86 2013-05-27 17:18:56

4 réponses

$('#mydiv').on('click', '*', function() {

* se liera à tous les éléments dans #mydiv

Démo --> http://jsfiddle.net/Vjwqz/1/

37
répondu Mohammad Adil 2013-05-27 13:31:11

Pour tous les descendants:

$('#mydiv').on('click', '*', function() {...});

Pour les descendants directs: {ce qu'on appelle les enfants en javascript}

$('#mydiv').on('click', '> *', function() {...});
12
répondu A. Wolff 2013-05-27 13:27:36

Je pense que vous pouvez quitter le sélecteur

$('#mydiv').on('click', function() {

Type de sélecteur: chaîne une chaîne de sélecteur pour filtrer les descendants de les éléments qui déclenchent l'événement. Si le sélecteur est null ou omis, l'événement est toujours déclenché lorsqu'il atteint le élément.

Http://api.jquery.com/on/

1
répondu Ronald 2013-05-27 13:23:04

Référez-vous à ceci http://api.jquery.com/all-selector/

Essayer:

$('#mydiv').on('click', '#mydiv *', function() {
var moo = $(this).attr('id');
    if (handlers[id]) {
        event.stopPropagation();
        handlers[id]();
}
-1
répondu LoganPHP 2013-05-27 13:27:03