2012-06-29 2 views
4

Я читал, и я пытаюсь переключить экран на div, который переключается. Он находится внизу моего сайта, поэтому, когда вы переключаете контактную форму, вы не можете сказать, что она есть, если вы не прокрутите вниз.Переместиться в DIV при переключении с jQuery

У меня есть этот фрагмент JQuery, который, кажется, не работает

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

тумблер работает нормально, но это не будет прокручиваться до дел.

Здесь я прочитал несколько старых статей, но, к сожалению, они связаны с сайтами, которые больше неактивны.

ответ

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, которые имеют переключатель на них, обратитесь к 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});}  
    }); 
}); 
Смежные вопросы