jQuery 在 div 上上下滚动

标签 jquery css

我用下面的样式表创建了一个 DIV 元素

#myDiv nav {
position: relative;
display: block;
height: 315px;
overflow: hidden;
margin: 60px 0 0 0;
}

现在有一个 UL>LI 元素列表,可以是任何高度,我创建了两个按钮 UP 和 DOWN 来导航这个“#myDiv nav”,jQuery 在下面

jQuery(document).ready(function(){

    var scrollh  = 0
    var scrollv  = 0

    jQuery(".up_nav").on("click" ,function(){
        scrollv = scrollv + jQuery('#myDiv nav').innerHeight()
        jQuery('#myDiv nav').stop(true, false).animate({
            scrollTop: (jQuery('#myDiv nav').offset().top - scrollv)
        },500);
    });

    jQuery(".down_nav").on("click" ,function(){
        scrollh = scrollh + jQuery('#myDiv nav').innerHeight()
        jQuery('#myDiv nav').stop(true, false).animate({
            scrollTop: scrollh
        },500);
    });
});

问题

最初几次点击 UP 和 DOWN 对我来说效果很好,但在这几次点击之后,滚动变得极端向上或极端向下。

我希望这是一种正常行为,根据驻留在“#myDiv nav”中的 UL 元素的高度并以小步长向上和向下滚动。

编辑

我已经将问题的工作版本上传到 jsfiddle 网站 Link to JSFIDDLE , 你会在点击几次向上或向下按钮后注意到这个问题。

我知道我的 jQuery 逻辑有缺陷,但我无法理解它。

最佳答案

这将更接近您要查找的内容。它是用页面的概念实现的。

http://jsfiddle.net/ue94jj60/6/

var Grid = function () {
    var self = this;

    var page = 1,
        nav = null;

    this.init = function () {
        nav = $('#myDiv nav');

        $(".up_nav").on("click", function () {
            self.scroll(page - 1);
        });

        $(".down_nav").on("click", function () {
            self.scroll(page + 1);
        });
    };

    this.pages = function () {
        return Math.round(nav[0].scrollHeight / nav.innerHeight());
    };

    this.scroll = function (p) {
        if (p < 1 || p > this.pages()) {
            return;
        }

        page = p;

        nav.stop(true, false).animate({
            scrollTop: (page - 1) * nav.innerHeight()
        }, 500);
    };

    $(this.init);
};

var grid = new Grid();

您还可以通过编程方式滚动它:

grid.scroll(3);

关于jQuery 在 div 上上下滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28372071/

相关文章:

javascript - 退出 jQuery 循环

html - 文本对齐对齐和最后一行居中

jquery - 将 Logo 与导航链接对齐,并将 Logo 置于响应模式的链接上方

html - CSS + 对齐文本 ':'

javascript - Form To Wizard 和 Zurb Foundation 遵守验证

javascript - jquery $.each 不附加到字符串

html - 无论我尝试什么,这张图片都拒绝与中心对齐

javascript - 单击复选框的文本描述仅切换第一个复选框

jquery - 如何更改全日历中的背景颜色

javascript - 将所有 jQuery 函数包装到一个类中