1

我有一个带有closeGeneralHelp一个参数的函数:idtag. 该函数应该执行以下操作:

a) slideUp“帮助” div,b)slideDown一组 div,然后 c) 滚动、跳转或以其他方式转到通过slideDown.

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

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

让(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);*/
}

谢谢!

4

1 回答 1

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

于 2013-09-03T19:45:40.777 回答