2016-09-21 73 views
0

我正在研究一段简单的代码来隐藏然后显示列表项。显示所有列表项 - 使用jQuery

目前,我有它的工作,所以它显示更多,每次我点击Load more。它会以5个批次加载它,但是,当我单击Load more时,我想要显示无序列表中的所有列表项。

如何用我当前的代码实现此目的?

演示:http://jsfiddle.net/jtg7n4wj/

$(document).ready(function() { 
 
    size_li = $("#myList li").size(); 
 
    x=3; 
 
    $('#myList li:lt('+x+')').show(); 
 
    $('#loadMore').click(function() { 
 
     x= (x+5 <= size_li) ? x+5 : size_li; 
 
     $('#myList li:lt('+x+')').show(); 
 
     $('#showLess').show(); 
 
     if(x == size_li){ 
 
      $('#loadMore').hide(); 
 
     } 
 
    }); 
 
    $('#showLess').click(function() { 
 
     x=(x-5<0) ? 3 : x-5; 
 
     $('#myList li').not(':lt('+x+')').hide(); 
 
     $('#loadMore').show(); 
 
     $('#showLess').show(); 
 
     if(x == 3){ 
 
      $('#showLess').hide(); 
 
     } 
 
    }); 
 
});
#myList li{ display:none; 
 
} 
 
#loadMore { 
 
    color:green; 
 
    cursor:pointer; 
 
} 
 
#loadMore:hover { 
 
    color:black; 
 
} 
 
#showLess { 
 
    color:red; 
 
    cursor:pointer; 
 
    display:none; 
 
} 
 
#showLess:hover { 
 
    color:black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="myList"> 
 
    <li>One</li> 
 
    <li>Two</li> 
 
    <li>Three</li> 
 
    <li>Four</li> 
 
    <li>Five</li> 
 
    <li>Six</li> 
 
    <li>Seven</li> 
 
    <li>Eight</li> 
 
    <li>Nine</li> 
 
    <li>Ten</li> 
 
    <li>Eleven</li> 
 
    <li>Twelve</li> 
 
    <li>Thirteen</li> 
 
    <li>Fourteen</li> 
 
    <li>Fifteen</li> 
 
    <li>Sixteen</li> 
 
    <li>Seventeen</li> 
 
    <li>Eighteen</li> 
 
    <li>Nineteen</li> 
 
    <li>Twenty one</li> 
 
    <li>Twenty two</li> 
 
    <li>Twenty three</li> 
 
    <li>Twenty four</li> 
 
    <li>Twenty five</li> 
 
</ul> 
 
<div id="loadMore">Load more</div> 
 
<div id="showLess">Show less</div>

+1

那岂不是足够的,只是显示在点击的所有项目? $('#myList li')。show(); – Gerfried

+0

@Gerfried这是一个很好的观点。我会尽快尝试。 – michaelmcgurk

回答

1

使用此

size_li = $("#myList li").size(); 
    x = 3; 
    $('#myList li:lt(' + x + ')').show(); 
    $('#loadMore').click(function() { 
    $('#myList li,#showLess').show(); 
    $('#loadMore').hide(); 
    }); 
    $('#showLess').click(function() { 
    $('#myList li:gt(' + x + '),#showLess').hide(); 
    $('#loadMore').show(); 
    }); 

http://jsfiddle.net/5y002xzc/

+0

当我这样做,这是我的结果:http://jsfiddle.net/jtg7n4wj/1/ – michaelmcgurk

+0

@michaelmcgurk是 – madalinivascu

+0

更新时间:http://jsfiddle.net/jtg7n4wj/2/ 轻微的调整。当我点击“加载更多”,然后“显示更少”时,看到什么结果:-( – michaelmcgurk

1

更新代码

您可以使用gtlt为节目里的定义的限制和隐藏

$(document).ready(function() { 
 
    size_li = $("#myList li").size(); 
 
    x=3; 
 
    $('#myList li:lt('+x+')').show(); 
 
    $('#loadMore').click(function() { 
 
     $('#loadMore').hide(); 
 
     $('#showLess').show(); 
 
     $('#myList li:gt(3)').show(); 
 
    }); 
 
    $('#showLess').click(function() { 
 
     $('#loadMore').show(); 
 
     $('#showLess').hide(); 
 
     $('#myList li:gt(3)').hide(); 
 
    }); 
 
});
#myList li{ display:none; 
 
} 
 
#loadMore { 
 
    color:green; 
 
    cursor:pointer; 
 
} 
 
#loadMore:hover { 
 
    color:black; 
 
} 
 
#showLess { 
 
    color:red; 
 
    cursor:pointer; 
 
    display:none; 
 
} 
 
#showLess:hover { 
 
    color:black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="myList"> 
 
    <li>One</li> 
 
    <li>Two</li> 
 
    <li>Three</li> 
 
    <li>Four</li> 
 
    <li>Five</li> 
 
    <li>Six</li> 
 
    <li>Seven</li> 
 
    <li>Eight</li> 
 
    <li>Nine</li> 
 
    <li>Ten</li> 
 
    <li>Eleven</li> 
 
    <li>Twelve</li> 
 
    <li>Thirteen</li> 
 
    <li>Fourteen</li> 
 
    <li>Fifteen</li> 
 
    <li>Sixteen</li> 
 
    <li>Seventeen</li> 
 
    <li>Eighteen</li> 
 
    <li>Nineteen</li> 
 
    <li>Twenty one</li> 
 
    <li>Twenty two</li> 
 
    <li>Twenty three</li> 
 
    <li>Twenty four</li> 
 
    <li>Twenty five</li> 
 
</ul> 
 
<div id="loadMore">Load more</div> 
 
<div id="showLess">Show less</div>