IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

$().click() ne fonctionne pas [AJAX]


Sujet :

jQuery

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 66
    Par défaut $().click() ne fonctionne pas
    Bonjour,

    Je travaille sur un système d'arbre généalogique, il s'agit donc d'un certain nombre de div que j'imbrique. De manière très simpliste mon code de base HTML est le suivant :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div>
    	<img src="" id="id1"/>
    </div>

    Chaque niveau de mon arbre contient donc un bloc DIV ainsi qu'une image. Quand je clique sur cette image j'envoie la requête AJAX suivante qui remplace le contenu de mon DIV par la réponse qui n'est rien d'autre que le niveau suivant de mon arbre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    (function($) {
       $("[id^='id']").click(function(){
         var monid=$(this).attr('id').replace("id","");
         var data = {	d1: 123,
    			d2: 456
    			id: monid	};
     
    	$.post(ajaxurl, data, function(reponse) {
    		$('#'+monid).html(reponse);
        	});     
       });
    })(jQuery);

    Le résultat HTML est donc le suivant :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div>
    	<img src="" id="id1"/>
    	<div>
    		<img src="" id="id11"/>
    	</div>
    </div>


    Donc jusque là ça marche très bien. Mon problème est pour l'étape suivante où je clique sur l'image ayant pour id la chaîne de caractère "id11". Et rien ne se passe alors que mon sélecteur JQuery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("[id^='id']").click(function(){});
    devrait le reconnaître sauf erreur de ma part ?

    Merci d'avance,
    Raphaël N.

  2. #2
    Membre confirmé Avatar de DJ Caësar 9114
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 135
    Par défaut
    Utilise "on" au lieu de click!
    http://api.jquery.com/on/

    edit: essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $("[id^='id']").on("click", function(){

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 66
    Par défaut
    Citation Envoyé par Cesar9114 Voir le message
    Utilise "on" au lieu de click!
    Testé et même problème. Ca marche très bien au premier niveau, les clics sur le second niveau ne sont pas détectés.

    Comme le second niveau est chargé via Ajax, il faut peut-être que je rédéclare mon event ?

  4. #4
    Membre confirmé Avatar de DJ Caësar 9114
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 135
    Par défaut
    La solution la plus "simple" (comprendre celle qui fonctionnera à coup sûr mais qui n'est pas la plus courte) c'est de faire un callback.
    Ta fonction callback c'est ce qu'il y a dans ton "click" (tu l'externalises donc avant), et tu fais un appel récursif à l'intérieur après ton appel ajax, avant de fermer le $.post.

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Lorsque tu déclares ton événement, il ne peut bien évidemment pas affecter des éléments qui n'existent pas...
    Il faut donc utiliser la délégation d'événements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('div_englobante').on('click', '[id^=id]', function(){...});
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, 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
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 66
    Par défaut
    Yep c'était bien un problème d'évènement en fin de compte. Et la délégation d'évènement règle le soucis.

    Merci à vous deux Cesar et Bovino !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/11/2014, 12h08
  2. Réponses: 3
    Dernier message: 09/07/2014, 14h57
  3. On Long Click ne fonctionne pas avec les Maps
    Par heni86_2003 dans le forum Android
    Réponses: 5
    Dernier message: 26/11/2012, 13h26
  4. L'évènement click ne fonctionne pas
    Par cassis2k dans le forum jQuery
    Réponses: 1
    Dernier message: 01/01/2009, 22h22
  5. Bouton evenement click ne fonctionne pas
    Par delphine_lep dans le forum IHM
    Réponses: 3
    Dernier message: 06/04/2007, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo