-1

我有 1000 个 div,其中 20 个是可见的,其余的是隐藏的。

在 onClick jquery 事件中,我希望接下来的 20 个 div 可见,依此类推。

4

3 回答 3

0

我建议类似于以下内容,但我强烈建议将其变成一个函数或插​​件:

var perSlice = 20; // how many to show on each 'page'

// hides all but the first 'page' of the matched elements
$('#wrap > div').hide().slice(0, perSlice).show();

$('a').click(
    function(e) {
            // reference to the elements being 'paged'
        var divs = $('#wrap div'),
            // the first of the visible 'paged' elements
            firstVisible = divs.filter(':visible:first'),
            // the index of the first visible 'paged' elements
            firstVisibleIndex = firstVisible.index('#wrap div'),
            lastVisible = divs.filter(':visible:last'),
            lastVisibleIndex = lastVisible.index('#wrap div'),
            // the index of the first of the 'paged' elements
            firstIndex = divs.filter(':first').index('#wrap div'),
            lastIndex = divs.filter(':last').index('#wrap div');

        // if you've clicked the a element with id="prev"
        if (this.id == 'prev') {
            // prevents the default action of the link
            e.preventDefault();
            // if the index of the first visible element is the same as the
            // index of the first element
            if (firstVisibleIndex == firstIndex) {
                // don't do anything, and exit
                return false;
            }
            else {
                // otherwise, hide all the paged elements
                divs.hide();
                // and then take a selection of those paged elements, and show them
                divs.slice((firstVisibleIndex) - perSlice, firstVisibleIndex).show();
            }
        }
        else if (this.id == 'next') {
            e.preventDefault();
            if (lastVisibleIndex == lastIndex) {
                return false;
            }
            else {
                divs.hide();
                divs.slice((lastVisibleIndex + 1), (lastVisibleIndex + 1) + perSlice).show();
            }
        }
    });​

JS 小提琴演示。

参考:

于 2012-06-22T20:17:56.720 回答
0

将 20 组分配给 css 类,并让您的 jQuery 方法在该类中全部显示。你可以有一个全局的 js 变量跟踪点击次数,然后如果是 if 语句,显示隐藏相应的部分:

<script type="text/javascript">var numberOfClicks = 0;</script>
<style>.IncurredDate1 {} .IncurredDate2 ... {}</style>
<div class="incurredRow1">blah</div>
<div class="incurredRow2">blah</div>
//in click event
<script type="text/javascript">
function buttonClick(event){
    switch(numberOfClicks )
    {
        case 1:
        ...
        case 20;  
            $(".incurredRow1").show();
            break;
        case 21:
        ...
        case 40:
            $(".incurredRow2").show();
            break;
        default:
            code to be executed if n is different from case 1 and 2
     }
   }();    
</script>
于 2012-06-21T20:41:07.353 回答
0

如果您使用的是 jquery,则可以使用该.slice()方法。

http://api.jquery.com/slice/

就像是:

$('button').click(function(e){
  var divs = $('.mydivs');
  divs.hide().slice(0, 20).show(); // 0 is the starting index
});

你只需要弄清楚逻辑来确定你的起始索引是什么。

我没有非 jquery 解决方案,也许其他人可以在这方面提供帮助。

于 2012-06-21T20:43:48.670 回答