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 :

les éléments ajoutés par append ne sont pas pris en compte par document.ready()


Sujet :

jQuery

  1. #1
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut les éléments ajoutés par append ne sont pas pris en compte par document.ready()
    Bonjour à tous,

    j'ai le souci suivant, j'ai lié une fonction à chaque clic sur un élément de classe suppr. J'ai mis cette fonction dans mon document.ready(), tout va bien, elle fonctionne impeccable.
    Mais il m'arrive d'injecter aussi des éléments .supppr via un append (par ajax). Et là ces éléments ne sont plus pris en compte par la fonction document.ready().

    Donc ma question est la suivante: comment lier cette fonction à des éléments ajoutés par append?

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $(document).ready(function() {
    $('#add_line').click(function() {
          //calcul du numero de la ligne
          var num_ligne=$('.subitem').children('fieldset').length;
          num_ligne++;
          var url=$('#url').val();
          $.ajax({
              url: url+"/ajax/id/"+num_ligne,
              context: document.body,
              success: function(data){
                 $('.subitem').append(data); /* mon append*/
              }
            });
     
     
    	$('.suppr').each(function(key,item){
     
    		$(this).click(function(){
    			alert('yep');
    			//$(this).parent().remove();
    		});
    	});
    });
    Merci d'avance pour votre aide!
    Feel good, feel geek

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Un classique maintes fois traité ...

    Logique puisque le ready est lancé lorsque les elements sont instanciés au démarrage et applique les evenements au objets présents sur la page.
    Les elements ajoutés ensuite ne passent pas à la moulinette du ready.

    Les solution ?

    Repasser un coup d'attribution d'evènements sur le callback d'ajax (une fois que le elements ajoutés dynamiquement sont chargés... (un peux fastidieux )

    Utiliser live() , on(), ou delegate() ... qui sont prévus a cet effet.
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  3. #3
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut
    Merci SpaceFrog pour ta réponse, mais malheureusement ça ne marche pas. Je travaille avec jQuery 1.6, j'ai donc mis ces lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $(document).delegate(".suppr", "each", function(key,item){ 
    	$(this).click(function(){
    		alert('yep');
    		//$(this).parent().remove();
    	});
     
    });
    Mais sans succès..j'ai aussi essayé on et live (au cas où), sans plus de résultat.
    Serait-ce parce qu'il s'agit d'une fonction each?
    Feel good, feel geek

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    pourquoi un each ?

    http://api.jquery.com/delegate/
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

Discussions similaires

  1. content type text/css text/javascipt ne sont pas pris en compte par apache
    Par aitiahcene dans le forum Administration système
    Réponses: 0
    Dernier message: 08/04/2013, 12h41
  2. [texmaker] les modif dans ma biblio ne sont pas pris en compte
    Par membreComplexe12 dans le forum Bibliographies - Index - Glossaires
    Réponses: 4
    Dernier message: 09/09/2011, 10h54
  3. linux : Les changements sur mes modules ne sont pas prix en compte
    Par pylearner dans le forum Général Python
    Réponses: 7
    Dernier message: 09/11/2010, 11h12
  4. Réponses: 1
    Dernier message: 09/08/2010, 10h25
  5. les retours chariots ne sont pas pris en compte dans le textbox
    Par marco62118 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/08/2009, 21h30

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