2012-06-29 91 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});}  
    }); 
});