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 :

Utilisation de .on()


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Par défaut Utilisation de .on()
    Bonjour,

    Lors d'une requête ajax j'injecte de html dans ma page et je souhaite que mon jquery soit applicable sur cette injection.

    Pour ça j'utilise .on()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $('body').on('click', '#saveInformations', function() {
    	$.ajax({
    		type: 'POST',
    		url: '/home/ajaxsaveinformations/',
    		dataType: 'text',
    		success: function (result) {
    			if (result != "error") {
    				$("#newDoc").append(result);
    			}
    		}
    	});
    });
    seulement ça ne fonctionne pas, aucune action n'est disponible lorsque je clique sur mon nouveau élément.

  2. #2
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Je pense qu'il s'agit d'un problème d'initialisation de ton événement. Si tu déclare ton .on( ) avant ton injection via ajx c'est normal que tu ais ce problème.

    Pour le résoudre (en supposant que j'ai raison sur les fait précédent), soit tu déclares tes événements après ton injection, tes éléments étant dans le DOM, l'événement s'attachera...

    Soit tu modifies ton initialisation avec une précision (sorte de condition)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $( document ).on( 'click', '#MyElt', function( ) {
      console.log( 'coucou' )
    } );
    Ici tu attache l'événement "click", a ton document et non a l'élément, cependant l'événement ne sera exécuté uniquement si tu as cliqué sur "#MyElt".

    Si tu as déclaré : $( '#MyElt' ).on( 'click', function( ) { console.log( 'coucou' ); } ); tu pourras déclarer autant d'événement que tu souhaites sur l'élément "#MyElt", si il n'existe pas il ne se passera rien.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Par défaut
    J'ai essayé avec le $(document) mais ça ne passe pas non plus, la function est bien appelée mais l'html injecté n'est pas interpretable par le navigateur. Ca peut venir du faite que le code est injecté via une requête ajax ? peut être faut-il rajouter une instruction dans le success juste après le .append() non ?

  4. #4
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    un dataType: html pourrait peut être résoudre le problème.

    Je suppose également que tu as volontairement raccourcis l'url passé non ?

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Par défaut
    Oui j'ai supprimé les data pour éviter de surcharger le code.

    Même en mettant html ça ne passe pas mieux.

    Il n'existe pas une instruction en Jquery pour recharger le DOM de toute la page ?

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Par défaut
    C'est bon j'ai trouvé,

    Il ne fallait pas appliquer le .on() lors de l'appel de requête ajax mais lorsque je clic sur l'élément injecté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	$(document).on('click', '.technicalDoc',
     
    		function() {
     
    			$("#newDocument").hide();
    			$(".docOptions").show();
    			$("#informationsPanel").hide();
     
    		}
     
    	);
    tout semble plus logique...

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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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