2010-07-12 4 views
6

une longue liste de divs imbriqués. Je passe l'ID d'un élément particulier (en fait un élément de paragraphe) sur la chaîne de requête et ouvre son div et parent onload. Cependant, la liste est si longue, parfois l'élément qui s'ouvre est caché sous le bas de la fenêtre.Faites défiler jusqu'à un élément particulier j'ai w/jQuery

Comment puis-je faire défiler automatiquement la fenêtre du navigateur de l'utilisateur afin que l'élément affiché est en haut de l'écran?

Vous avez probablement pas besoin de ça, mais pour le dossier ... ma liste ressemble à ceci:

<div id="div1"> 
    <p id="1"></p> 
    <div>stuff</div> 
    <p id="2"></p> 
    <div>stuff</div> 
    <p id="3"></p> 
    <div>stuff</div> 
</div> 
... 
<div id="divN"> 
    <p id="997"></p> 
    <div>stuff</div> 
    <p id="998"></p> 
    <div>stuff</div> 
    <p id="999"></p> 
    <div>stuff</div> 
</div> 
+3

Il n'est pas valide pour commencer vos identifiants avec un numéro. – user113716

+4

Oui oui ... ce n'est pas le code réel. : P – Bryan

Répondre

12

Vous pouvez utiliser la fonction scrollIntoView.

$(document).ready(function() { 
    $('#divN').get(0).scrollIntoView(); 
}); 
+1

cela va-t-il fonctionner cross browser? –

+0

+1 sur cette réponse, mais avec la mise en garde qu'il ne défile pas si la cible est déjà en vue. @Russ - Ceci est largement supporté à ma connaissance. – user113716

+0

@Russ: Je ne pense pas, sinon ce serait une fonctionnalité plutôt sympa. Mais je pense vraiment que cela semble trop beau pour être vrai. L'équipe de base de Resig & jQuery l'aurait implémentée si elle était un "crossbrowser". – jAndy

2

La meilleure façon de faire est plus facile en utilisant Ariel Flesler's scrollTo plugin. Je l'ai utilisé quelques fois auparavant et il est petit, léger et fonctionne très bien.

6

jQuery:

$(document).ready(function(){ 
    $(document.body).scrollTop($('#divN').offset().top); 
}); 
Questions connexes