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 :

Optimiser les appels de jQuery ?


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 55
    Par défaut Optimiser les appels de jQuery ?
    Bonjour,

    Après une petite recherche sur developpez.net et sur Google, je n'ai pas trouvé de réponses satisfaisante à mon problème.

    J'ai un select qui appelle une fonction quand l'utilisateur le change, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('select').change(function(){
            alert("J'ai changé !");
    });
    Jusqu'ici tout va bien.
    Seulement voilà, je suis amené à modifier le DOM pour ajouter de nouveaux selects qui doivent réagir comme le premier.
    Je mets donc le code précédent dans une fonction, et j'appelle cette fonction après avoir ajouté le nouveau select, ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function init_form(){
        $('select').change(function(){
            alert("J'ai changé !");
        });
    }

    Le problème, c'est qu'à chaque fois que ma fonction est appelée, tous les selects qui étaient déjà affectés par cette fonction sont affectés une 2e fois.

    Du coup si on reprend mon exemple, tant qu'il n'y a qu'un seul select, on aura 1 seule alert. Mais si on ajoute un second select, et qu'on appelle init_form(), on aura 2 alert au changement du premier select.

    Existe-t-il un moyen pour que cette fonction libère les affectations d'avant ?

  2. #2
    Membre expérimenté Avatar de MaitreKaio
    Profil pro
    Freelance Java / Web / Mobile
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance Java / Web / Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    La solution que tu cherches c'est le 'on' de jquery:
    http://api.jquery.com/on/

    Avec lui, tu peux binder des comportements sur des éléments qui seront ajoutés dans le DOM plus tard. C'est un peu comme si jQuery surveillait le DOM pour ajouter les comportements quand c'est nécessaire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 55
    Par défaut
    Effectivement je ne connaissais pas du tout .on() !!

    Un grand merci, ça va bien me servir

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

Discussions similaires

  1. Optimiser les appels à la fonction fread()
    Par Korrigan5 dans le forum Débuter
    Réponses: 17
    Dernier message: 24/07/2012, 12h06
  2. Optimiser les appels à la BD ?
    Par toutoune60 dans le forum JSF
    Réponses: 2
    Dernier message: 24/01/2007, 15h48
  3. Optimiser les paramètres MySQL - appel aux experts
    Par SuperCed dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 04/12/2006, 12h26
  4. Optimiser les tables
    Par blizar dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/06/2004, 08h34
  5. [VB6] [Langage] VB6 et les appels de dll
    Par Dave63 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 16/01/2003, 18h20

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