2015-03-11 1 views
1

J'ai un élément div avec overflow-y mis à auto. Maintenant, j'ai un tas d'éléments avec la classe highlight1. Je veux faire défiler en avant et en arrière sur les éléments avec le class comme highlight1.jquery scrollto ne pas faire défiler pour corriger l'élément

Pour certaines raisons, jquery scrollTo ne fonctionne pas correctement. Voici la syntaxe que je suis en train d'utiliser:

$('#highlightDiv').animate({ 
    scrollTop: $("#"+elementId).offset().top + 'px' 
}, 'fast'); 

Voici le Jsfiddle de ce que je suis en train d'accomplir. Quelqu'un peut-il expliquer pourquoi le rouleau ne se déplace pas à l'élément approprié.

Répondre

6

J'ai réponse simple Votre script ne connaît pas la hauteur et la position de défilement de la div que vous vous faites défiler deux valeurs devriez ajouter à lui et il devrait fonctionner

scrollTop en fonction scrollToNextHighlight() devrait ressembler à ceci

scrollTop: ($('#highlightDiv').scrollTop() - 
$('#highlightDiv').offset().top) 
+ $("#"+elementId).offset().top + 'px' 

et il devrait fonctionner

+0

pouvez-vous s'il vous plaît expliquer pourquoi vous ajoutez ceci:. $ ('# highlightDiv') scrollTop() - $ ('# highlightDiv'). offs et(). top – javaMan

+0

this ($ ('# highlightDiv'). scrollTop() - $ ('# highlightDiv'). offset(). top) compte la position de défilement depuis le haut de div #highlightDiv parce que vous n'ajoutez que la position du défilement d'éléments sera compté à partir du haut du corps – arclite