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 :

Fonctions jquery non interprétées dans page chargée en ajax


Sujet :

jQuery

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut Fonctions jquery non interprétées dans page chargée en ajax
    Bonjour, je navigue dans mon site en chargeant les différentes pages dans une div. Cependant, lorsque dans ces pages je fais appel à des fonctions jquery (autres que des click, etc... réglés avec la fonction live) du genre "tooltip", "gallerific", celles-ci ne sont pas détectées ni interprétées.

    Tout fonctionne bien lorsque j'appelle ces pages de manière classique, j'en conclue donc que c'est le passage en ajax qui bloque tout. Comment remédier à ce problème ? Merci d'avance.

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Certains plugins Jquery doivent être initialisés dans la fonction document ready.
    Mais en fait ils assignent un gestionnaire d'évènements à tous les éléments
    de la page qu'ils doivent "dynamiser" lors de cette initialisation.

    Quand tu recharge du code dans un div, les gestionnaires sont perdus. Il faut
    les réinitialiser.

    Par exemple, si dans ta fonction init tu as quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('span.tooltip').tooltip();
    Et que dans ta page tu recharge un div, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#mondiv').load(url);
    Alors il te faudrait appeler à nouveau tooltip() pour tous les éléments
    que tu viens de charger (et pas les éléments existants qui sont déjà
    initialisés).

    Tu peux faire cet appel sur la callback appelée après chargement de
    la div, puis tu cible avec un contexte qui correspond à ta div. dans ce goût là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('#mondiv').load(url, function() {
      $('span.tooltip', $('#mondiv')).tooltip();
    });

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut
    Merci pour cette explication. Très claire, précise, j'ai compris, j'ai appliqué, et ça fonctionne ! Impeccable. Merci beaucoup.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/08/2011, 14h41
  2. Réponses: 1
    Dernier message: 25/09/2009, 12h03
  3. [AJAX] Appel d'une fonction javascript dans une page chargée en ajax
    Par baedal dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 17/04/2008, 17h03
  4. [AJAX] Accès fonctions déclarées dans page chargée par Ajax
    Par yagrasdemonde dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 04/02/2008, 15h33
  5. [phpBB] Code PHP non interprété dans un thème subsilver
    Par killpilot dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 24/06/2007, 11h42

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