JeuWeb - Crée ton jeu par navigateur
Questionnement sur jQuery.live() - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Questionnement sur jQuery.live() (/showthread.php?tid=6476)

Pages : 1 2


RE: Questionnement sur jQuery.live() - Sephi-Chan - 01-11-2012

Les exemples valent mieux que les mots.


callback = function(){ alert('Grosse endive !') }

// Un click sur n'importe quel td déjà présent au chargement du DOM déclenche le callback.
// jQuery écoute les clicks sur tous les td placés dans des tr.
$('tr td').on('click', callback)

// Un click sur un td (même ajouté dynamiquement) déclenche le callback si il appartient à un tr déjà présent au chargement du DOM.
// jQuery écoute les clicks sur tous les tr et les redispatch aux td enfants.
$('tr').on('click', 'td', callback)

// Un click sur n'importe quel td déclenche l'event. On pourrait mettre 'body' au lieu de window.document.
// jQuery écoute tous les clicks sur window.document et les redispatch aux td enfants qui sont dans des tr.
$(window.document).on('click', 'tr td', callback)

Un fiddle pour illustrer tout ça.


RE: Questionnement sur jQuery.live() - Maks - 01-11-2012

qui de l'exemple 2 ou 3 faisait office de live() et delegate() auparavant ?


RE: Questionnement sur jQuery.live() - Sephi-Chan - 01-11-2012

L'exemple 1 équivaut au bind.
L'exemple 2 équivaut à un delegate : on maîtrise la "cible intermédiaire".
L'exemple 3 équivaut à live : la "cible intermédiaire" est window.document.


RE: Questionnement sur jQuery.live() - Maks - 01-11-2012

Merci pour ces éclaircissements Smile


RE: Questionnement sur jQuery.live() - niahoo - 01-11-2012

Oui ton exemple est bien fait pour piger le fonctionnement en tant qu'utilisateur. du coup c'est bien pratique le delegate, enfin bon, je dis ça mais j'en ai jamais eu besoin. en sachant que ça existe je trouverai peut-être moyen de m'en servir.

Par contre, ça ne dit toujours pas si jQUery écoute tous les events de tous les elements ! enfin bon pour ça il faudrait foutre un vieux console.log dans le code de jqery et cliquer sur des elements non bindés Smile


RE: Questionnement sur jQuery.live() - Sephi-Chan - 01-11-2012

Chaque chose en son temps ! :p

En tout cas, d'après un rapide essai, les listeners définis à l'ancienne sont bien déclenchés par des triggers de jQuery dans le cas des events standards.