2017-10-14 3 views
0

J'essaie d'utiliser jQuery pour renvoyer la relation des éléments de navigation enfant à son frère, puis j'ajoute un attribut de données à chaque frère avec le nombre qui représente leur commande. Donc s'il y a des frères et sœurs, le troisième frère a un lien de données = "3".Renvoie le numéro nth-child puis l'ajoute à ce lien en tant qu'attribut de données

L'ordre des liens de nav est déterminé par l'utilisateur dans un CMS.

Ma structure actuelle HTML est:

<nav> 
    <a class="season-nav-link" href="#">1</a> 
    <a class="season-nav-link" href="#">2</a> 
    <a class="season-nav-link" href="#">3</a> 
    <a class="season-nav-link" href="#">4</a> 
</nav> 

Et mon JS est:

$(function(){ 
    var ordernum = ($("nav.season-slider-nav a").index()+1); 
    var orderlink = $("a.season-nav-link"); 
    $(orderlink).attr('data-info', ordernum); 
}); 

actuellement revient avec l'attribut de données dans chaque lien, mais la valeur de chacun est "1" .

Répondre

2

cela arrive parce que vous n'utilisez que le premier élément du résultat de votre premier sélecteur. Vous souhaitez probablement parcourir tous les frères et sœurs et remplir une liste de valeurs.

puis itérer sur les résultats du deuxième sélecteur et remplir en conséquence

pseudo exemple:

$(function(){ 
    var ordernum = []; 
    $("nav.season-slider-nav a").each(function(index, element){ 
     ordernum.push(index+1); 
    }); 
    $("a.season-nav-link").each(function(index, element){ 
     $(element).attr('data-info', ordernum[index]); 
    }); 
    }); 
+0

J'ai eu quelques erreurs avec cela. this.index n'est pas une fonction. –

+0

@MichaelHeimes vient d'éditer la réponse. J'espère que cela fonctionne. – efkin

+0

Cela m'a donné l'erreur: ordernum.append n'est pas une fonction. –

1

Pls utiliser chaque 'pour accéder à chaque élément, étant donné que l'indice peut être obtenu à partir de chaque' lui-même, vous peut juste écrire:

$(function(){ 
    $("nav a").each(function(index, elem) { 
    $(elem).attr('data-info', index + 1); 
    }); 
}); 
+0

Vous êtes l'HOMME! Tellement simple et ça marche si bien. J'ai beaucoup à apprendre avec JS et jQuery. J'espère mettre assez de temps de côté bientôt pour étudier au lieu de simplement essayer de manipuler les extraits que je trouve. Merci! –

+0

Je suis en train de récupérer des valeurs étranges. 13,14,15,16. –

+0

Supposons qu'il existe de nombreux éléments anchor (a) dans votre nav (l'index est basé sur tous les éléments). Si vous voulez être plus précis, vous pouvez ajouter le nom de classe ou le sélecteur relavant dans 'nav' ou 'a': $ ("nav.className a.className"). Each (.... –