javascript - jQuery 来回隐藏

标签 javascript jquery html

HTML 代码

<div id="sub-up"></div>

<div id="subnavigation">
    <div class="sub-item" data-count="1">
        <a href="#">bla</a>
    </div>                  
    <div class="sub-item" data-count="2">
        <a href="#">bla</a>
    </div>
    <div class="sub-item" data-count="3">
        <a href="#">bla</a>
    </div>
    <div class="sub-item" data-count="4">
        <a href="#">bla</a>
    </div>
    <div class="sub-item" data-count="5">
        <a href="#">bla</a>
    </div>
    <div class="sub-item" data-count="6">
        <a href="#">bla</a>
    </div>
    <div class="sub-item" data-count="7">
        <a href="#">bla</a>
    </div>
    <div class="sub-item" data-count="8">
        <a href="#">bla</a>
    </div>
    <div class="sub-item" data-count="9">
        <a href="#">bla</a>
    </div>
    <div class="sub-item" data-count="10">
        <a href="#">bla</a>
    </div>
</div>

<div id="sub-down"></div>

我该如何管理它,如果您加载页面,您可以看到带有 data-count 的 div 1到5?当您点击 sub-down div 你可以看到带有 data-count 的 div 2到6,依次点击sub-down你能看到3到7吗?

当您单击sub-up时div,可以看到data-count 2 到 6 等等...

我不知道如何记住显示的 5 个 div 的位置,也不知道如何告诉 jQuery 它必须切换到最高的数字(如果您想单击低于 data-count 的数字) 1.类似旋转木马效果。

所以我想要完成的就是像一个带有 5 个显示的 div 标签的旋转木马,这些标签每次点击 sub-down 都会移动。和sub-up .

如果您想阅读我到目前为止编写的 jQuery 代码,请告诉我。哦另一件事,div list is dynamic .

解决方案(感谢 sdespont)

var page = 0;
var pageMax = $('.sub-item').length - 5;

$('#subnavigation div.sub-item').hide().slice(page, page + 5).fadeIn(10);

$('#sub-down').click(function () {
    page = (page < pageMax) ? page+1 : pageMax;
    var tmp = page * 1;
    $('#subnavigation div.sub-item').fadeOut(10).promise().done(function () {
        $('#subnavigation div.sub-item').slice(tmp, tmp + 5).fadeIn(10)
    });
});

$('#sub-up').click(function () {
    page = (page > 0) ? page-1 : 0;
    var tmp = page * 1;
    $('#subnavigation div.sub-item').fadeOut(10).promise().done(function () {
        $('#subnavigation div.sub-item').slice(tmp, tmp + 5).fadeIn(10);
    });
});

编辑

可以在他/她更新的答案中找到另一个解决方案。非常感谢!

最佳答案

你可以这样做:http://jsfiddle.net/UQTY2/258/

使用nbElem来选择要显示的元素数量

var $elem = $('#subnavigation div.sub-item');

var page = 0;
var nbElem = 1;
var pageMax = $elem.length / nbElem;
var fadeSpeed = 100;

//Display the first batch of elements
$('#subnavigation div.sub-item').hide().slice(page, page + nbElem).fadeIn(fadeSpeed);

//Next batch of elements
$('#sub-down').click(function () {
    page = (page < pageMax) ? page + 1 : pageMax;
    var tmp = page * nbElem;
    $elem.fadeOut(fadeSpeed).promise().done(function () {
        $elem.slice(tmp, tmp + nbElem).fadeIn(fadeSpeed);
    });
});

//Previous batch of elements
$('#sub-up').click(function () {
    page = (page > 0) ? page - 1 : 0;
    var tmp = page * nbElem;
    $elem.fadeOut(fadeSpeed).promise().done(function () {
        $elem.slice(tmp, tmp + nbElem).fadeIn(fadeSpeed);
    });
});

关于javascript - jQuery 来回隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20923052/

相关文章:

javascript - 如何编辑 contentEditable div 中的链接

javascript - Bootstrap 模态提交我的表单

javascript - 为什么不在 window 对象上定义 const 和 let 语句

javascript - 将样式表对象注入(inject) Iframe

jquery - 使用 Jquery 设置特定日期

javascript - 从 .focusout() 的输入中检索 .val()

javascript - Jquery on click 函数不适用于 IE 8 中的 img

javascript - 样式选择以在左侧和右侧显示值

javascript - Jquery -Issue 将 div 内容获取为 html

html - @media 打印 div : How to solve overlapping page text on pages?