我有一个函数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);*/
}
谢谢!
答案 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 ).scrollIntoView();
});
如果你有一个旧的jQuery并且无法升级,你可能想要放弃$("#someElement").scrollTop()
而转而使用$('#someElement').offset().top