2010-08-18 10 views
1

Si j'avais deux ensembles de classes, comme sijquery scrollTo nième enfant

<div class = "link 1"></div> 
<div class = "link 2"></div> 
<div class = "link 3"></div> 
.... 
<div class = "link x"></div> 

et

<div class = "target 1"></div> 
<div class = "target 2"></div> 
<div class = "target 3"></div> 
.... 
<div class = "target x"></div> 

Comment puis-je obtenir le n-ième link pour faire défiler la page vers le n-ième target en utilisant jQuery scrollTo ? Les classes 1, 2, 3 .... sont générées dynamiquement.

Merci.

+1

Lorsque chaque nœud utilise un identifiant différent, sémantiquement, vous devriez vraiment utiliser 'id', pas' class'. 'class' est pour les groupes d'éléments qui partagent des propriétés similaires. 'id' est pour l'identification d'un noeud individuel, ce que vous faites avec' class'. –

+1

Je ne suis pas d'accord ... les divs avec classe similaire dans ce cas partage des propriétés similaires. – Topera

+0

oui je sais, ce n'est pas le "plein" code. il a aussi un ensemble d'autres classes et identifiants générés. – pixeltocode

Répondre

2

Vous pouvez le faire en fonction de .index(), quelque chose comme ceci:

$("div.link").click(function() { 
    var target = $("div.target").eq($(this).index("div.link")); 
    $.scrollTo(target); 
}); 

Il utilise la surcharge .index(selector) pour obtenir un lien qui nous avons cliqué sur, il obtient le même indice de l'div.target ensemble pour trouver la destination en utilisant .eq().

Note: s'il y a d'autres <div> éléments avec les classes target ou link vous devez modifier les sélecteurs ici ils sont donc que la recherche du lot que vous êtes, sinon les indices peuvent être hors .

+0

Brillant! Merci beaucoup. – pixeltocode

Questions connexes