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 valeur target <a>


Sujet :

jQuery

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 143
    Par défaut Récupérer valeur target <a>
    Bonjour,

    j'ai un menu de navigation de ce type
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <nav>
    	<ul>
    		<li><a href="#page1">Page 1</a></li>
    		<li><a class="selected" href="#page2">Page 2</a></li>
    		<li><a href="#page3">Page 3</a></li>
    	</ul>
    </nav>
    j'aimerai récupérer la target du <a> qui se trouve après le <a> avec la class "selected"

    J'ai bien essayé plusieurs chose mais rien ne fonctionne voici ce que j'ai testé en dernier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var targetNext = $("a:hasClass(selected)").next().attr("href");
    Si quelqu’un a une idée
    Merci d'avance

  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 : 55
    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
    Les balises <a> n'ont pas de balises frères, donc la notion de .next() n'a pas de sens.
    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 confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 143
    Par défaut
    d'accord merci,
    alors comment je peut faire,
    se servir du <li>?

  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 : 55
    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
    Oui, il faut remonter, aller au suivant et redescendre dans l'arborescence.
    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 confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 143
    Par défaut
    Ok
    donc en gros je fait un parent() pour remonter au <li> puis un next() pour accéder au prochain <li> et enfin un children() pour accéder au <a> recherché?

  6. #6
    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 : 75
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par CedriZero Voir le message
    Ok
    donc en gros je fait un parent() pour remonter au <li> puis un next() pour accéder au prochain <li> et enfin un children() pour accéder au <a> recherché?
    En gros et en détail, oui ! Mais...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /*
     * Il y a plusieurs chemins pour aller à Rome.
     * 
     * Si vous cherchez la valeur de l'attribut href
     * du tag a ayant la classe "selected"
     */
    var targetNext = $( "nav > ul" ).find( "a[class='selected']" ).attr( "href" );

    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.)

  7. #7
    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 : 55
    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
    * Si vous cherchez la valeur de l'attribut href
    * du tag a ayant la classe "selected"

    j'aimerai récupérer la target du <a> qui se trouve après le <a> avec la class "selected"


    Sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('li').has('.selected').next().find('a').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

  8. #8
    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 : 75
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Ce n'est pas le tag "li" qui a la classe "selected"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var targetNext = $( "nav > ul" ).find( "a[class='selected']" ).next().attr( "href" );


    EDIT : erreur !

    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.)

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 143
    Par défaut
    Merci pour votre aide a tous les deux,
    cependant je n'arrive pas a faire fonctionner ma fonction:

    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
     
    $(window).keypress(function(e){
    	var code = e.keyCode;
    	//Fleche bas
    	if( code  == 40){
    	var target = $( "nav > li" ).find( "a[class='selected']" ).next().attr( "href" );
    	alert(target)
    	}
     
    	//Fleche haut
    	if( code  == 38){
    	var target = $( "nav > li" ).find( "a[class='selected']" ).prev().attr( "href" );
    	alert(target)
    	}
    	maFonction(target);
     
    });
    les alert me retourne undefined

  10. #10
    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 : 55
    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
    Ce n'est pas le tag "li" qui a la classe "selected"
    Non je sais, c'est pour ça que j'utilise la méthode .has() :
    Citation Envoyé par has
    Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.


    En revanche, dans ton code, la balise <a> n'ayant pas de frère, .next() renvoie un tableau vide !
    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

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 143
    Par défaut
    J'ai donc essayer avec ceci
    mais c'est pareil alert = undefined

    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
     
    $(window).keypress(function(e){
    	var code = e.keyCode;
    	//Fleche bas
    	if( code  == 40){
    	var target = $('li').has('.selected').next().find('a').attr('href');
    	alert(target);
    	}
    	//Fleche haut
    	if( code  == 38){
    	var target = $('li').has('.selected').prev().find('a').attr('href');
    	alert(target);
    	}
     
    	maFonction(target);
     
    });

  12. #12
    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 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    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 661
    Billets dans le blog
    1
    Par défaut
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <nav>
    	<ul>
    		<li><a href="#page1">Page 1</a></li>
    		<li><a class="selected" href="#page2">Page 2</a></li>
    		<li><a href="#page3">Page 3</a></li>
    	</ul>
    </nav>

    => http://jsfiddle.net/gEXms/
    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 !

  13. #13
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 143
    Par défaut
    ceci fonctionne parfaitement si la class selected est ecrite en dur dans la page je viens de tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert($('.selected').parent().next('li').find('a').attr('href'));
    cependant moi je le fait en fonction de la position de mon scroll avec le addClass
    et la ça ne marche pas pourtant dans mon firebug je vois bien que mon <a> a la class "selected"

  14. #14
    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 : 55
    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


    As of jQuery 1.6, the .attr() method returns undefined for attributes that have not been set. In addition, .attr() should not be used on plain objects, arrays, the window, or the document. To retrieve and change DOM properties, use the .prop() method.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('li').has('.selected').next().find('a').prop('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

  15. #15
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 143
    Par défaut
    La fonction de Bovino fonctionne aussi sauf quelle me retourne le href avec l'url complète du site.
    Enfin bref ça n'explique pas pourquoi si la class est ajouté par le addClass ça ne fonctionne pas non?

  16. #16
    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 : 55
    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
    J'ai pourtant mis l'explication...

    Pour plus de détails.
    Lorsque tu construis ta page HTML, tu mets des attributs à des balises.
    Mais ensuite, lorsque tu manipules les objets JavaScript du DOM, tu ne manipules pas des balises HTML mais des propriétés d'objets JavaScript associés.
    Il y a bien, à la construction du DOM, une similitude entre les deux puisque les propriétés des objets HTMLElement sont initialisées à partir des attributs HTML, mais quand tu les modifies en JavaScript, cette liaison se perd.
    Donc avec jQuery, .attr() récupères des valeurs d'attributs HTML (HTMLElement.getAttribute('attr');)
    alors qu'avec .prop() tu récupères des propriétés JavaScript (HTMLElement.prop;).
    J'avais fait à une époque une page d'exemple pour illustrer ça : http://dmouronval.developpez.com/tes...Attributs.html
    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

  17. #17
    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 : 75
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Non je sais, c'est pour ça que j'utilise la méthode .has() :



    En revanche, dans ton code, la balise <a> n'ayant pas de frère, .next() renvoie un tableau vide !
    Oops ! j'ai lu trop vite, je n'avais pas lu : has()

    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.)

  18. #18
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 143
    Par défaut
    Merci beaucoup de l'explication j'avais compris mais pas tout, et c'est vrai que je ne savais pas la différence entre les deux.
    Par contre j'ai bien mis le .prop comme vous me l'avez suggérez mais c'est toujours la même chose j'ai undefined si le "selected" est ajouté avec le addClass

Discussions similaires

  1. [POI]Récupérer valeur cellule suivant format
    Par leminipouce dans le forum Documents
    Réponses: 1
    Dernier message: 27/10/2005, 09h52
  2. Récupérer valeur contrôle en dynamique via requête
    Par nicburger dans le forum Access
    Réponses: 10
    Dernier message: 15/09/2005, 16h41
  3. [ActionScript] Récupérer valeur balise <param />
    Par JohnBlatt dans le forum Flash
    Réponses: 1
    Dernier message: 18/07/2005, 15h50
  4. CR9 - Récupérer valeurs multiples d'un champ paramètre
    Par CR9-Deb dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/07/2005, 17h08
  5. récupérer valeur d'un ID après insertion
    Par rikidi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/08/2003, 23h21

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