我正在构建一个progressively-enhanced,Bootstrap网页应用程序,每个页面都有task-centric help个功能。帮助区div(id="help_area"
)以隐藏状态加载;通常当用户点击“帮助”按钮(a id="nav_help_button"
)时,主内容div从span12压缩到span9,帮助区域显示为span3。这很有效。
因为我想支持手机和平板电脑,我正在使用Bootstrap的响应式脚手架。所以如果你在一个狭窄的视口上查看页面,点击帮助按钮“显示”页面底部隐藏的帮助区域‡。我正在尝试使用jQuery的.slideToggle()
的回调方法来执行JavaScript(window.location.hash = "help_area";
),它在显示后“跳转到”帮助区域,但跳跃没有运气(它没有' t错误;它不会将浏览器焦点移动到帮助区域。)
如何在页面底部显示div,然后跳转到它?我也在使用preventDefault,因此浏览器不会尝试在目标之前跳转到内部链接透露。这可能是冲突吗?
以下是相关的ECMA脚本:
$('#nav_help_button').click(function(event) {
"use strict"; //let's avoid tom-foolery in this function
event.preventDefault(); //don't let a tag try to jump us to #help_area before we reveal it
//adjust spans of main block and help area, set aria-hidden attribute on help block to help screen-readers
if ( $('#help_area').attr('aria-hidden')==='true' ) {
$('#content_container.span12').switchClass('span12', 'span9', 300);
$('#help_area').delay(300).slideToggle(300, function() { window.location.hash = "help_area"; }).attr('aria-hidden', 'false');
}
else {
$('#help_area').slideToggle(300).attr('aria-hidden', 'true');
$('#content_container.span9').delay(300).switchClass('span9', 'span12', 300);
}
});
我还设置了a JSFiddle that illustrates the problem。 复制
‡作为最右边的div,它左边的所有内容都堆叠在顶部,因此新“显示”的帮助区域通常位于页面的可见部分之下。
相关:
答案 0 :(得分:1)
当我完全按照您的说法(步骤1-4)对我的浏览器(即Chrome 24)执行操作时,您的JSFiddle会跳转。您的浏览器是什么?
但也许这是你的问题。如果我导航到http://fiddle.jshell.net/jhfrench/HdCbu/7/show/#help_area(请注意附加的哈希标记)并执行步骤1-4,我的浏览器不会跳转。请注意,当您第一次导航到该URL时,没有可见的#help_area。因此,您导航到的URL指定了不可见的哈希标记。也许浏览器有点困惑,只是让#help_area哈希标签处于不良状态。它不会允许从那时起滚动到它,即使它变得可见。猜测,但我希望它有用!