J'ai deux DIV, le premier contient un lien qui contient l'identifiant de la seconde DIV dans son attribut HREF (complete setup on jsbin).Délégation d'événement jQuery avec un balisage HTML non trivial?
Je souhaite animer le second DIV lorsque l'utilisateur clique sur le premier - n'importe où sur le premier. Je veux aussi utiliser la délégation d'événement parce que je vais avoir beaucoup de tels "couples DIV" sur une page (et j'utilise un extrait JS de ce SO answer).
Si l'utilisateur clique sur le DIV lui-même, cela fonctionnera - il suffit de vérifier la sortie de la console firebug. Le problème est que si l'utilisateur clique sur l'un des SPAN ou sur le lien lui-même, cela ne fonctionne plus.
Comment est-ce que je peux généraliser le gestionnaire de clic pour gérer des clics sur n'importe quoi dans mon DIV?
Voici le JS:
$('#a').click(function(e) {
var n = $(e.target)[0];
console.log(n);
if (n && (n.nodeName.toUpperCase() == 'DIV')) {
var id = $(n).find('a').attr('hash');
console.log(id);
$(id).slideToggle();
}
return false;
});
Cela semble vraiment plus simple! – montrealist
En fait, maintenant que j'ai eu l'occasion de le tester, ça ne marchera pas, parce que j'ai plusieurs liens dans le DIV, c'est tout le problème de la délégation d'événements. Je n'ai pas vraiment pensé quand j'ai vu cela et l'ai accepté comme la bonne réponse. – montrealist
Donc, fondamentalement, il y aura plusieurs liens dans div # a, mais il y en a juste un qui a l'id de l'autre div dedans? Et quand vous cliquez n'importe où dans le div # a vous voulez que le div référencé par ce lien soit animé? Ou y aura-t-il plusieurs liens, et chacun vous voulez animer un autre div différent? Dans le premier cas, ajoutez une classe au lien avec le hachage, par exemple info, et changez $ ("a", this) en $ ("a.info", this) – Thomas