2012-06-29 57 views
4

我一直在阅读,我试图让屏幕移动到正在切换的div。它位于我的网站的底部,因此当您切换联系人表单时,除非您向下滚动,否则无法确定其位置。与jQuery切换时移动到DIV

我的jQuery的这个片段,似乎并不奏效

//contact toggle 
$("#show-con").click(function(){ 
    $("#contact-wrap").slideToggle("slow"); 
    $("#contact-wrap").animate({scrollTop: $("#contact-wrap").offset().top}); 
}); 

的切换工作正常,但它不会滚动到div。

我在这里阅读了一些较早的文章,但不幸的是,他们链接到网站不再活跃。

回答

13

这将工作,使用html, body您选择:

$("#show-con").click(function(){ 
    $("#contact-wrap").slideToggle("slow"); 

    if ($("#contact-wrap").is(':visible')) { 
    $("html, body").animate({scrollTop: $("#contact-wrap").offset().top}); 
    } 
}); 

还增加了检查,如果元素是可见的只有滚动没有其他。

+0

谢谢,这个作品完美!我感谢您的帮助。 – souporserious

+2

@ftntravis:不客气,也帮我看看这个:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Blaster

+0

有没有一种方法可以为所有人定义这个对他们有切换的元素?或者我将不得不定义每一个? – souporserious

2

要为所有div s定义这个参数,请参阅http://jsfiddle.net/LkTf8/79/

$(document).ready(function() { 
    $(".trigger").click(function(e){ 
    var $toggled = $(this).attr('id'); 
    var $paneltoggled = $(this).next(".panel").attr('id'); 

    $(this).next(".panel").slideToggle('slow'); 
    if ($("#" + $paneltoggled).is(':visible')) { 
    $("html, body").animate({scrollTop: $("#" + $paneltoggled).offset().top});}  
    }); 
});