2

我正在构建一个逐步增强的引导式的Web 应用程序,它在每个页面上都提供以任务为中心的帮助。帮助区 div( id="help_area") 以隐藏状态加载;一般当用户点击“帮助”按钮a id="nav_help_button"(这很好用。

因为我想支持手机和平板,所以我使用的是 Bootstrap 的响应式脚手架。因此,如果您在狭窄的视口上查看页面,单击帮助按钮“显示”页面底部的隐藏帮助区域‡。我正在尝试使用 jQuery 的.slideToggle()回调方法来执行 JavaScript ( window.location.hash = "help_area";),该 JavaScript () 在显示后“跳转到”帮助区域,但在跳转时没有运气(它不会出错;它只是不会移动浏览器专注于帮助区域)。

如何在页面底部显示一个 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);
    }
});

我还设置了一个说明问题的 JSFiddle。复制

  1. 打开http://fiddle.jshell.net/jhfrench/HdCbu/7/show
  2. 然后调整该浏览器窗口的大小,直到“PTO、AIT Life、Hours Worked”等堆叠在一起
  3. 单击右上角的按钮(带有三个白色水平条的按钮)以显示导航菜单
  4. 单击蓝色的“帮助”按钮以执行显示/跳转。

‡ 作为最右侧的 div,它左侧的所有内容都堆叠在顶部,因此新“显示”的帮助区域通常位于页面可见部分的下方。

有关的:

4

1 回答 1

1

当我完全按照您所说的(步骤 1-4)为我的浏览器(Chrome 24)执行操作时,您的 JSFiddle 会跳动。您的浏览器是什么?

但也许这是你的问题。如果我导航到http://fiddle.jshell.net/jhfrench/HdCbu/7/show/#help_area(注意附加的井号标签)并执行您的步骤 1-4,我的浏览器不会跳转。请注意,当您第一次导航到该 URL 时,没有可见的 #help_area。因此,您要导航到的 URL 指定了一个不可见的哈希标记。也许浏览器对此有点困惑,只是让#help_area 哈希标记处于错误状态。从那时起,即使它变得可见,它也不允许滚动到它。推测,但我希望它有帮助!

于 2013-02-09T00:33:25.513 回答