2010-02-24 11 views
14

J'ai un extrait de jQuery dans le document prêt qui permet de basculer d'un div contenant un textarea:jQuery: déplacer fenêtre de fenêtre pour afficher l'élément fraîchement basculée

$('div#addnote-area').hide(); // hide the div 
$('a#addnote-link').click(function() { // click event listener on link 
    $('div#addnote-area').toggle(); // toggle the hidden div 
}); 

La bascule fonctionne bien en cliquant sur le lien. Le problème que j'ai est que si div#addnote-area est en dessous de la fenêtre actuelle du navigateur, il reste là quand il est affiché. Je voudrais que le curseur de l'utilisateur passe à la zone de texte et que l'ensemble de la zone de texte soit visible dans la fenêtre.

Click here to see an image http://i50.tinypic.com/5ousuv.png

Répondre

4

Vérifiez la scrollTo jQuery plugin. Vous pouvez tout simplement faire quelque chose comme ceci:

$.scrollTo('div#addnote-area'); 

Ou, si vous voulez animer, fournir le nombre de millisecondes pour le défilement pour durer:

$.scrollTo('div#addnote-area', 500); 
+0

Merci @ Matt, qui fait l'affaire! Souhait qu'il y avait un moyen simple jQuery (non-plugin), mais je vais le prendre. – k00k

1

jQuery de scrollTop fonctionne également. Essayez de régler comme:

$('#idOfElement').css('scrollTop', 10) 

Vous pouvez obtenir la hauteur/largeur assez facilement en utilisant $(...).offset().

49

Sans le plugin scrollTo

$(window).scrollTop($('div#addnote-area').offset().top) 

EDIT: Eh bien, je reçois que beaucoup de points de cette vieille réponse :)

Voici un bonus, cela peut aussi être animé.

Il suffit d'utiliser la fonction animate() et cibler la balise body:

$('body').animate({scrollTop:$('div#addnote-area').offset().top},500)

Essayez sur Stackoverflow! Ouvrez la console d'inspecteur et exécuter

$('body').animate({scrollTop:$('#footer').offset().top},500)

+0

La solution animée semble fonctionner pour Chrome et non Firefox (18.0.1). Je ne suis pas trop forte avec JS/jQuery, quelqu'un sait pourquoi cela peut être? –

+4

Essayez d'animer à la fois le corps et html..' $ ('body, html') ' – Ben