如何在页面底部显示div,然后跳转到它?

时间:2013-02-08 23:56:40

标签: javascript jquery twitter-bootstrap progressive-enhancement

我正在构建一个progressively-enhancedBootstrap网页应用程序,每个页面都有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。 复制

  1. 打开http://fiddle.jshell.net/jhfrench/HdCbu/7/show
  2. 然后调整浏览器窗口的大小,直到“PTO,AIT Life,Hours Worked”等堆叠在彼此之上
  3. 点击右上角的按钮(带有三个白色水平条的按钮)以显示导航菜单
  4. 点击蓝色“帮助”按钮执行显示/跳转到。
  5. ‡作为最右边的div,它左边的所有内容都堆叠在顶部,因此新“显示”的帮助区域通常位于页面的可见部分之下。

    相关:

1 个答案:

答案 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哈希标签处于不良状态。它不会允许从那时起滚动到它,即使它变得可见。猜测,但我希望它有用!