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 :

Ajax, les événements ajoutés ne sont plus actifs


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Points : 20
    Points
    20
    Par défaut Ajax, les événements ajoutés ne sont plus actifs
    Bonjour

    Je me sert de jquery sur un projet symfony. Voici mon soucis :

    J'ai un bloc qui contient des textes cliquables liés à des évènements click() de jquery (on va dire que tous les span de classe "toto" sont cliquables, par exemple).
    Donc quand je clic sur ces span "toto", jquery appel certaines fonctions. Ca ca va, ca marche.

    Mais, ailleurs dans la page, j'ai une autre bloc qui fait un appel ajax mettant à jour le bloc contenant les textes cliquables.
    Donc pas de soucis j'appelle une fonction qui me renvoi le nouveau code html, contenant toujours certain textes "toto" cliquables. Je met ensuite mon bloc à jour avec $("#mon_bloc").html(le_nouveau_code_html).
    Il se met bien à jour, sauf que les éléments "toto" ne sont plus cliquable.

    C'est comme s'il fallait redire à jquery d'associer l'événement "click" à toutes les classes "toto" de la page... Et ca je vois pas comment faire.

    Si vous avez une piste, ca serait le bienvenue.

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Points : 39
    Points
    39
    Par défaut
    salut,

    lorsque en jquery, on utilise la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $("img").click(function(){
        alert("ceci est une image");
    });
    Tous les éléments de la page de type image chargés au démarrage de la page seront associés à l'évènement click. Par contre, avec cette syntaxe, la persistance de l'évènement click sur l'image n'est pas conservée. Donc, si le contenu de la page est modifié (via AJAX par exemple), les nouvelles images ne seront pas concernés par l'évènement click.

    Pour que les nouvelles modifications soient prises en compte, il faut utiliser un moyen de faire persister les évènements.

    Pour cela, il existe la méthode live. En utilisant la syntaxe suivante, les nouvelles images ajoutées dans la page conserveront l'évènement click :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $("img").live("click",function(){
        alert("ceci est une image");
    });
    Il existe une autre solution, c'est d'utiliser les méthodes 'bind' et 'unbind' mais je ne l'ai jamais utilisée.

  3. #3
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Points : 190
    Points
    190
    Par défaut
    bind() et unbind() ne le permet pas, sans recharger le dom il y a live() et die() qui est sont contraire.
    Mais il existe aussi one() qui peux rendre service.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/03/2012, 18h53
  2. Les utilisateurs d'iPhones sont plus à la page que ceux d'Android
    Par Katleen Erna dans le forum Actualités
    Réponses: 14
    Dernier message: 19/01/2011, 23h13
  3. VBA Outlook - Les événements ne se déclenchent plus
    Par St-Jean dans le forum Outlook
    Réponses: 1
    Dernier message: 16/10/2008, 16h30
  4. Réponses: 6
    Dernier message: 26/06/2006, 16h52

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