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 :

JQuery, each(), attr()


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut JQuery, each(), attr()
    Bonjour,

    j'ai un petit soucis avec jQuery. J'ai un menu de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <li id="sous_menu">
       <ul href="lien1">lien1</ul>
       <ul href="lien2">lien2</ul>
       <ul href="lien3">lien3</ul>
    </li>
    je souhaiterais pour récupérer l'attribut "href" de chacun. Je fais donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $("#sous_menu > ul").each(function(){
       alert(this.attr("href"));
    });
    j'obtiens, malheureusement un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.attr is not a function
    dans ma console firebug.

    Alors j'ai bien essayé d'approcher le problème sous d'autres angles mais je n'ai toujours pas trouvé de solution.

    Où est-ce que je m'y prends mal? Où est-ce que je me prends les pinceaux dans le tapis?

    Merci!

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut,
    Maintes fois évoqué et traité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#sous_menu > ul").each(function(){
       alert(this.attr("href"));
    });
    Dans la fonction anonyme, this correspond au contexte global...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#sous_menu > ul").each(function(elem){
       alert(elem.attr("href"));
    });
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    C'est une solution que j'avais testé mais ça ne fonctionne pas non plus.
    Il me répond le même message:
    elem.attr is not a function
    c'est étrange...

    Pour ce qui est du "this", quand je fais j'obtiens
    [object HTMLUListElement]
    , ce qui semblerait dire qu'il se réfère bien à l'élément ul et non au contexte global, non?

    merci!

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Effectivement, l'élément est passé implicitement en paramètre...
    En revanche :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <li id="sous_menu">
       <ul href="lien1">lien1</ul>
       <ul href="lien2">lien2</ul>
       <ul href="lien3">lien3</ul>
    </li>
    Commence par créer des codes HTML valables...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    je m'y attendais! je suis en phase de test, donc un peu rapide j'avoue.
    si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <li id="sous_menu">
       <ul><a href="lien1">lien1</a></ul>
       <ul><a href="lien2">lien2</a></ul>
       <ul><a href="lien3">lien3</a></ul>
    </li>
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $("#sous_menu > ul >a").each(function(elem){
      alert(elem.attr("href"));
    });
    Malheureusement, cela ne résout pas mon problème... j'avoue que je ne comprends pas..

  6. #6
    Membre chevronné Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Par défaut
    Salut,

    Si tu essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <ul id="sous_menu">
       <li><a href="lien1">lien1</a></li>
       <li><a href="lien2">lien2</a></li>
       <li><a href="lien3">lien3</a></li>
    </ul>
    C'est pas mieux ?

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

Discussions similaires

  1. jQuery each stop et restart en incrémentant
    Par soohikei dans le forum jQuery
    Réponses: 3
    Dernier message: 25/09/2014, 11h34
  2. Jquery Each test attribute
    Par Romalafrite dans le forum jQuery
    Réponses: 2
    Dernier message: 18/10/2012, 10h36
  3. Jquery récupération attr au click
    Par matini dans le forum jQuery
    Réponses: 11
    Dernier message: 06/10/2011, 11h53
  4. [SP-2007] jQuery.attr ne fonctionne pas !
    Par Sash ça crashe dans le forum Développement Sharepoint
    Réponses: 9
    Dernier message: 17/02/2011, 09h41
  5. each function jquery
    Par zoutigo dans le forum jQuery
    Réponses: 2
    Dernier message: 12/08/2009, 11h05

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