隐藏一个div,隐藏另一个div,滚动到新的取消隐藏div

时间:2013-09-03 19:37:39

标签: javascript jquery html

我有一个函数closeGeneralHelp,它带有一个参数:idtag。该函数应该执行以下操作:

a)slideUp“帮助”div, b)slideDown一组div然后 c)滚动,跳转或以其他方式转到通过slideDown公开的div组的特定(但动态确定)其他div。

我有两类div(“DivsToShow”和“DivToHide”)。 “DivsToShow”中包含一些其他div,每个div都有一个唯一的id(这就是idtag)。

(a)和(b)部分工作正常。无论我尝试什么,滚动到特定(但动态确定)的div似乎都会失败。这是代码。每个/ * * /注释块代表一个单独的,但失败(并且fla))尝试使其工作。

获得(c)工作的任何帮助?我是一名JavaScript / jQuery婴儿。所以任何合理相关的建议/指针也会受到赞赏。

function closeGeneralHelp(idtag){
    $(".DivsToShow").slideDown("slow");
    $(".DivToHide").slideUp("slow");
    /* var divid = document.getElementById(idtag);
    divid.style.display = 'block';
    divid.scrollIntoView(true);  */
    /*  document.getElementById(idtag).scrollIntoView();*/
    /*  $(window).scrollTo(idtag,800,{queue:true});*/
    /* window.location.hash = idtag;*/
    /* window.setTimeout(function() {window.scroll(0, findPos(idtag));}, 5);*/
}

谢谢!

1 个答案:

答案 0 :(得分:1)

你需要一个回调函数,在这种情况下,在完成滑动后:

$(".DivToHide").slideUp("slow");
$(".DivsToShow").slideDown("slow", function(){
    var $ShownDiv = $(this);
    // this is the callback of slidedown, after it is done, perform this:
    $('html,body').scrollTop( $ShownDiv.scrollTop() );

    // Or animated:
    $('html,body').animate({scrollTop: $ShownDiv.scrollTop()}, 1000); // in ms

    // Or more native JS
    document.getElementById( $(ShownDiv)[0].id ).scro‌​‌​llIntoView();
});

如果你有一个旧的jQuery并且无法升级,你可能想要放弃$("#someElement").scrollTop()而转而使用$('#someElement').offset().top