Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2011, 23h36   #1
Expert Confirmé Sénior
 
Avatar de le_chomeur
 
Développeur informatique
Inscription : février 2006
Messages : 3 563
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 3 563
Points : 4 025
Points : 4 025
Par défaut Propagation des évènements

bonjour a tous , j'ai un soucis que je n'arrive pas a résoudre :

Code :
<div id="1"><div id="2"><input type="checkbox" /></div></div>
voila pour le code

je souhaite binder 2 évènement mais lorsque que bind un click sur div id 1 et que je click sur la checkbox , l'évènement est déclenché :-/

quelqu'un aurait-il une idée ?

( ps j'ai essayé les stopPropagation mais rien n'y fait ... )
__________________
est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )
le_chomeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 00h15   #2
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 794
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 794
Points : 5 118
Points : 5 118
bonsoir,

est-ce que ceci peut répondre à ton problème ?


[edit]
Je n'ai pas vu que j'étais dans le forum JQuery
Mais je laisse ma réponse au cas où...
[/edit]
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 01h07   #3
Expert Confirmé Sénior
 
Avatar de le_chomeur
 
Développeur informatique
Inscription : février 2006
Messages : 3 563
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 3 563
Points : 4 025
Points : 4 025
Salut auteur , ça faisait un moment

je pense effectivement que le drapeau est la seule solution ^^

merci encore ^^
__________________
est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )
le_chomeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 08h47   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
avec jquery passe par le data pour y mettre ton flag ??
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 08h59   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Ceci dit, je suis étonné que stopPropagation() ne fonctionne pas
Peut-être avec un return false dans le gestionnaire de l'input.
Au pire, utilise Event.target pour déterminer quel élément à reçu l'événement.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/07/2011, 09h20   #6
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonjour

Un ID doit être unique et il doit commencer par un caractère alphabétique (Norme W3C HTML 4) !


Code :
1
2
3
4
5
6
7
<div id="monID1">
	<p>Un mot pour remplir</p>
	<div id="monID2">
		<input type="checkbox" />
		<p>Un mot pour remplir</p>
	</div>
</div>
Citation:
Envoyé par Bovino Voir le message
Au pire, utilise Event.target pour déterminer quel élément à reçu l'événement.
currentTarget() pour obtenir la division et target() pour l'élément de la division qui a reçu le clic.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$("#monID1").click(function(e){
	console.log("monID1, target = ", e.target, ", currentTarget = ", e.currentTarget);
 
	return false;
});
 
$("#monID2").click(function(e){
	console.log("monID2, target = ", e.target, ", currentTarget = ", e.currentTarget);
 
	return false;
});
 
$("#monID2 > input[type='checkbox']").click(function(e){
	console.log("input, target = ", e.target, ", currentTarget = ", e.currentTarget);
 
	return false;
});
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h42   #7
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 794
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 794
Points : 5 118
Points : 5 118
Citation:
Envoyé par le_chomeur Voir le message
Salut auteur , ça faisait un moment
Salut. Effectivement cela fait un bout temps Mais je suis toujours là


Citation:
Envoyé par Bovino Voir le message
Au pire, utilise Event.target pour déterminer quel élément à reçu l'événement.
Citation:
Envoyé par danielhagnoul Voir le message
currentTarget() pour obtenir la division et target() pour l'élément de la division qui a reçu le clic.
je croyais que ces fonctions n'étaient pas compatibles avec tous les navigateurs
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h48   #8
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Citation:
Envoyé par Auteur
je croyais que ces fonctions n'étaient pas compatibles avec tous les navigateurs
Là on parle des propriétés de l'objet Event de jQuery, donc si, la syntaxe est uniformisée et compatible
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h50   #9
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Citation:
Envoyé par Auteur Voir le message
je croyais que ces fonctions n'étaient pas compatibles avec tous les navigateurs
C'est la version jQuery : http://api.jquery.com/category/events/event-object/
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 11h57   #10
Expert Confirmé Sénior
 
Avatar de le_chomeur
 
Développeur informatique
Inscription : février 2006
Messages : 3 563
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 3 563
Points : 4 025
Points : 4 025
Citation:
Envoyé par danielhagnoul Voir le message
Bonjour

Un ID doit être unique et il doit commencer par un caractère alphabétique (Norme W3C HTML 4) !


Code :
1
2
3
4
5
6
7
<div id="monID1">
	<p>Un mot pour remplir</p>
	<div id="monID2">
		<input type="checkbox" />
		<p>Un mot pour remplir</p>
	</div>
</div>


Daniel je me permet de souligner que j'étais modo sur DVP et que je sais tout ça lol il s'agit d'un bout de code uniquement pour illustrer mon problème

Citation:
Envoyé par danielhagnoul Voir le message
currentTarget() pour obtenir la division et target() pour l'élément de la division qui a reçu le clic.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$("#monID1").click(function(e){
	console.log("monID1, target = ", e.target, ", currentTarget = ", e.currentTarget);
 
	return false;
});
 
$("#monID2").click(function(e){
	console.log("monID2, target = ", e.target, ", currentTarget = ", e.currentTarget);
 
	return false;
});
 
$("#monID2 > input[type='checkbox']").click(function(e){
	console.log("input, target = ", e.target, ", currentTarget = ", e.currentTarget);
 
	return false;
});

Au final j'ai fait beaucoup plus simple qu'un flag :
- Div 1 positionnéé en absolute avec un z-index à 1
- Div 2 positionnée en absolute a l'extérieur de Div 1 et avec un z-index à 2

pour le stopPropagation j'ai pas mal recherché le pourquoi cela ne fonctionnait pas et je n'ai pas trouvé de solution
__________________
est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )
le_chomeur est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 26/07/2011, 12h26   #11
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Pour moi, stopPropagation() fonctionne :

http://jsfiddle.net/sWcv9/

html:
Code :
<div id="monID1">     <p>Un mot pour remplir</p>     <div id="monID2">         <input type="checkbox" />         <p>Un mot pour remplir</p>     </div> </div>
jquery:
Code :
1
2
3
4
5
6
$("#monID1").click(function(e){     
    alert('pwet');
});
$("#monID2 > input[type='checkbox']").click(function(e){     
    e.stopPropagation();
});
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 12h46   #12
Expert Confirmé Sénior
 
Avatar de le_chomeur
 
Développeur informatique
Inscription : février 2006
Messages : 3 563
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 3 563
Points : 4 025
Points : 4 025
effectivement sur cet exemple cela fonctionne mais sur mon écran ( un peu plus complexe ) les click sur les checkbox sont bindé en live après avoir été créer suite a une requète en ajax , est ce cela le problème ?

je vais vérifier ...
__________________
est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )
le_chomeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 12h54   #13
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
salut,

oui.
Lorsque tu es en live, tu choppes l'event une fois qu'il est remonté à document.
Donc si tu es bindé normalement dans ton div, tu vas d'abord chopper l'event dans le div, et apres dans l'input!
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 12h58   #14
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Du coup, tu devrais effectivement vérifier le Event.target lorsque tu reçois l'événement sur la div
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 13h58   #15
Expert Confirmé Sénior
 
Avatar de le_chomeur
 
Développeur informatique
Inscription : février 2006
Messages : 3 563
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 3 563
Points : 4 025
Points : 4 025
Merci pour ce complément d'info , j'avais un doute sur le bind en live ^^
Bovino , yes je dois vérifier d'ou provient l'évènement ^^

merci à tous
__________________
est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )
le_chomeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 18h18   #16
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 794
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 794
Points : 5 118
Points : 5 118
Citation:
Envoyé par le_chomeur Voir le message

Daniel je me permet de souligner que j'étais modo sur DVP et que je sais tout ça lol il s'agit d'un bout de code uniquement pour illustrer mon problème
c'est ça, c'est ça Tu t'es planté dans ton bout de code et puis c'est tout

Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 18h38   #17
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
Citation:
Daniel je me permet de souligner que j'étais modo sur DVP et que je sais tout ça
c'est pas une raison ...
regarde moi je suis bien modo ^^
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 18h50   #18
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Pour revenir à live(), il est attaché par défaut à la racine du document, mais il est possible de préciser le contexte :
Code :
$('#div2', $('#div1').live('click', callback));
mais le mieux reste d'utiliser delegate()
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/07/2011, 21h43   #19
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Citation:
Daniel je me permet de souligner que j'étais modo sur DVP et que je sais tout ça lol il s'agit d'un bout de code uniquement pour illustrer mon problème
Une excellente raison pour donner le bon exemple au débutant qui lira vos messages !

Citation:
je souhaite binder 2 évènement mais lorsque que bind un click sur div id 1 et que je click sur la checkbox , l'évènement est déclenché :-/
Si la question n'est pas explicite et posée dans un français correct, "binder 2 évènement", il ne faut pas s'attendre à des miracles.

Si la question n'est pas complète, si le code donné ne reflète pas le véritable problème la solution proposée ne peut résoudre le problème !
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/07/2011, 09h30   #20
Expert Confirmé Sénior
 
Avatar de le_chomeur
 
Développeur informatique
Inscription : février 2006
Messages : 3 563
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 3 563
Points : 4 025
Points : 4 025
Je me permet de souligner le fait qu'en général les initiés comprendront
__________________
est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )
le_chomeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h32.


 
 
 
 
Partenaires

Hébergement Web