滚动页面使用按键不能使用jQuery工作?

时间:2013-10-01 20:27:22

标签: jquery html5 css3 scroll keypress

我尝试了一些步骤,以便我的页面通过按键进入特定步骤。

<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
    <div class="container">
        <ul id="page-navigate" class="nav">
            <li><a href="#A" data-link="A" class="current">A</a>

            </li>
            <li><a href="#B" data-link="B">B</a>

            </li>
            <li><a href="#C" data-link="C">C</a>

            </li>
            <li><a href="#D" data-link="D">D</a>

            </li>
        </ul>
        </div>
    </div>
</div>
<section id="A"></section>
<section id="B"></section>
<section id="C"></section>
<section id="D"></section>

所以,我尝试使用jQuery来上下按键,以便我可以直接访问特定部分。 代码在jsfiddle中提到:http://jsfiddle.net/coolshivster/qGjA4/2/  我的jQuery代码是:

            $(document).keyup(function (event) {
            console.log("keyup is working");
            var direction = null;
            if (event.keyCode == 40) {
                direction = 'next';
            } else if (event.keyCode == 38) {
                direction = 'prev';
                console.log('previous click');
            }
            if (direction != null) {
                console.log("wake up keys");
                $('ul#page-navigate a.current').parent()[direction]().find('a').click();
                var link = $('ul#page-navigate a.current').attr('data-link');
                console.log('link is', link);
                $('#' + link + '').slideDown("slow");
            }
        });
        $('ul#page-navigate').on('click','a', function () {
            $(this).parents('ul#page-navigate').find('li').each(function () {
                $(this).find('a').removeClass('current');
            });
            $(this).addClass('current');
        });

现在, 我尝试使用不同的东西,比如直接使用slidedown使用section id直接链接。 我尝试使用click()函数单击导航栏锚点。 但是,我的代码中的所有操作都会失败或可能会出现错误。

提前致谢.. !!!

1 个答案:

答案 0 :(得分:1)

您错误地使用了slideDown功能。它用于通过动画高度从0px到其正常高度来显示元素。这与滚动无关。

您需要执行this之类的操作来完成您要执行的操作。请记住,动画部分是可选的。

这是一个简单的非动画版本:

$('html,body').scrollTop($('#' + link).offset().top)