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 :

Récupérer les data d'une éléments HTML sans ID dans une fonction


Sujet :

jQuery

  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut Récupérer les data d'une éléments HTML sans ID dans une fonction
    Bonjour,

    je souhaite utiliser les attributs html DATA pour passer des paramètres à une fonction qui peut (entre autre) être appelée en réaction à un événement quelconque (genre un click).

    Lorsque l'élément qui appel cette fonction est créé dynamiquement via jquery, pas de problème, ça fonctionne. Si cet élément est présent statiquement dans le code HTML, ça ne marche plus...

    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
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
     
    <script language="javascript">
    function MaFunc(event) {
    	alert($(this).data("id"));
    }
     
    $(function(){
    	$("<a />").text("hop").data("id", 10).on("click", MaFunc).appendTo($("body"));
    });
     
    </script>
    <html><head></head>
    <body>
    <a data-id="10" onclick="MaFunc(event);">paf le code</a><br />
    </body>
    </html>
    Dans cet exemple, ça marche si on click sur "hop", mais ça ne marche pas si on click sur "paf le code"...
    Comment puis-je donc récupérer en jquery ce data-id depuis un éléments html (<a>) qui n'a pas d'ID propre ?

    En vous remerciant

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    attention à ne pas confondre les 2.
    Dans un cas event est un élément jQuery dans l'autre c'est un Event.

    Dans le cas du onclick inline tu peux récupérer l'id en utilisant la propriété dataset.

    Mais je ne vois pas bien l’intérêt !

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    L’intérêt du onclick() inline ?

    C'est à cause du Ajax. Il m'arrive de devoir charger du HTML via des appels ajax. Lorsque cela se produit, si le code retourné contient des éléments qui doivent réagir à des événements, il faut re-executer les fonctions jquery qui vont mettre les listener sur les éléments html chargés.

    Après, je début en JQuery. Si tu penses que je suis sur une mauvaise voie, je suis preneur de tout conseil.

    En tout cas, merci pour la réponse.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Mélanger le jQuery et le Vanilla JS dans le même bloc de code c'est souvent une source de complications et d'erreurs.

    Malgré le mélange des genres, il y a une solution simple en jQuery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function MaFunc( event ) {
        console.log( $( event.target ).data( "id" ) );
    }
     
    $( function(){ // forme abrégée de $(document).ready(function(){
     
        $( "<a />", {
            "text" : "hop",
            "data-id" : "10",
            "click" : MaFunc
        }).appendTo( "body" );
     
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/07/2009, 01h14
  2. Réponses: 17
    Dernier message: 16/03/2009, 09h21
  3. Réponses: 4
    Dernier message: 23/02/2009, 19h39
  4. Afficher un lien HTML dans une page HTML sans qu'il soit interprété
    Par nico1214 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/11/2008, 23h14
  5. Réponses: 4
    Dernier message: 26/04/2006, 17h43

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