2010-06-23 15 views
1

Ce travaille actuellement, pour la plupart:jQuery suivant li frères et soeurs ne fonctionne pas sur le dernier élément

$(".nextproject").click(function() { 
    $(window).scrollTo(
     $(this) 
     .parents() 
     .nextAll() 
     .find("li:visible:first"), 
     1000, 
     {easing:'easeOutExpo', axis:'x', offset:-75 } 
    ); 
}); 

Vous pouvez voir la démo ici: http://www.studioimbrue.com/index2.php

Il fonctionne très bien dans l'ensemble. Lorsque vous cliquez sur les filtres en bas, il fonctionne toujours et ignore les divs cachés. Une fois que vous arrivez à la fin, juste avant le #about div, ça ne continue pas, et je ne sais pas pourquoi ça ne marchera pas.

Éditer: J'ai changé les éléments div en éléments li. Ça ne marche toujours pas correctement; il arrive au dernier de la liste et n'ira pas plus loin. Cela n'a aucun sens.

Répondre

3

Vous avez besoin d'un léger ajustement, à l'aide du sélecteur dans le .nextAll() appel, comme ceci:

$(".nextproject").click(function() { 
    $(window).scrollTo(
     $(this) 
     .parents() 
     .nextAll("li:visible:first"), 
     1000, 
     {easing:'easeOutExpo', axis:'x', offset:-75 } 
    ); 
}); 

Étant donné que votre HTML est comme ceci:

<li class="container photography_cat" style=""> 
    <!-- Other stuff.... --> 
    <div class="nextproject"></div> 
</li> 

Vous voulez trouver le prochain <li> qui est un frère ou une soeur du parent .nextproject (pas un enfant de l'élément suivant qui est un <li>) ... il est juste arrivé de travailler sur tout sauf la dernière section bec ause ils ont que <ul> avec <li> éléments à l'intérieur (les images sur la droite). La dernière section "about" n'a aucun enfant <li>, et précédemment la première de ces petites images sur la droite était ce qu'elle faisait défiler, pas la section réelle ... donc ça n'a pas fonctionné à la fin :) Maintenant que j'y pense, est-il possible que vous étiez confus .find() et .filter()? .filter() fonctionnerait aussi bien ... mais puisque .nextAll() prend un sélecteur, il n'y a aucun besoin dans ce cas.

+0

Belle. Je vous remercie. Je ne confondais pas les deux, j'essayais simplement de multiples possibilités pour réaliser ce que j'essayais de faire. Le '.find()' était juste le dernier que j'ai essayé. :) – steve

+0

@steve - Bienvenue! :) –