jquery - 限制此自定义导航的水平滚动

标签 jquery css

我使用 jquery 创建了一个水平滚动条,它有左右按钮。

<div id="container">
<ol>
    <li class="a"></li>
    <li class="b"></li>
    <li class="c"></li>
    <li class="d"></li>
    <li class="e"></li>
</ol>
</div>

<button id="left">left</button>
<button id="right">right</button>

容器具有相对定位的 overflow hidden ,内容通过以下 jquery 向左或向右移入或移出 View :

$('#left').on('click',function(){
    $('ol').css('left','-=100px');
});

$('#right').on('click',function(){
    $('ol').css('left','+=100px');
});

问题是这些函数是无限的,你可以一直点击,它们会在屏幕外越来越远。我想限制它,以便一旦没有更多的对象可以进入 View 时,该函数就会执行其他操作。

我想有很多方法可以做到这一点,但我认为没有一种方法看起来那么优雅。例如,计算容器的大小和内部元素的宽度总和,记录每个按钮被按下的次数,并在每次按下按钮时进行一些常量计算。

I've made a JS fiddle of this if I've not explained it very well.

理想情况下,在该示例中,您永远不会看到粉红色 block 。

最佳答案

你只需要 if 语句:

$('#left').on('click',function(){
    if ($('ol').css('left') != '0px') {
         $('ol').css('left','-=100px');
    }
});


$('#right').on('click',function(){
    if ($('ol').css('left') != '300px') {
        console.log($('ol').css('left'));
         $('ol').css('left','+=100px');
    }
});

http://jsfiddle.net/kqhNr/4/

关于jquery - 限制此自定义导航的水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15240601/

相关文章:

jquery - 为什么这个 CSS3 高度转换不起作用

jquery - 如何在完整文档上触发点击事件时忽略子字段

javascript - 如何获取 JSON URL 文件并使其不断更新

javascript - 带参数的 Nodejs PUT 请求

javascript - jQuery进入动画

css - 如何在鼠标悬停时使圆形图像变暗?

html - 无法删除网站的页脚链接

css - 如何将不同的 CSS 样式应用于子元素,因为它们出现在彼此内部?

带有类值增量的 jQuery nextAll

Jquery根据输入值改变div背景