編集:コメントに基づいてコードを更新し、
以下のように、html に [show more] リンクを追加します。
<ul>
<li data-pet="cat"><a href="/black-cat">Black Cat<a></li>
<li data-pet="cat"><a href="/grey-cat">Grey Cat<a></li>
<li data-pet="cat"><a href="/red-cat">Red Cat<a></li>
<li class="shPets" data-pet="cat">Show More..</li>
<li data-pet="dog"><a href="/dog-cat">White Dog<a></li>
<li data-pet="dog"><a href="/dog-cat">Black Dog<a></li>
<li data-pet="dog"><a href="/dog-cat">Grey Dog<a></li>
<li class="shPets" data-pet="dog">Show More..</li>
<li data-pet="fish"><a href="/dog-cat">Grey fish<a></li>
</ul>
上記はスクリプトで実行できますが、HTML に記述した方がはるかに優れて簡単です。
デモ
var $li = $('ul li');
var $shPets = $('.shPets');
$shPets.each (function () {
var petType = $(this).data('pet');
$('ul li[data-pet='+petType+']')
.not('.shPets') //not shPets
.not(':first') //everything except first
.hide();
});
$('.shPets').click (function () {
var petType = $(this).data('pet');
if ($(this).text() == 'Show More..') {
$(this).text('Hide');
$('ul li[data-pet='+petType+']').show();
} else {
$(this).text('Show More..');
$('ul li[data-pet='+petType+']')
.not('.shPets') //not shPets
.not(':first') //everything except first
.hide();
}
});
最初以外のすべてを非表示にしてから、テキストの表示/非表示のクリックでそれらを切り替えることができます。下記参照、
デモ
var $ul = $('ul');
var $li_not_first = $('ul li').not(':first').hide();
$ul.append('<li class="shPets">Show More..</li>');
$('.shPets').click (function () {
if ($(this).text() == 'Show More..') {
$(this).text('Hide');
$li_not_first.toggle();
} else {
$(this).text('Show More');
$li_not_first.toggle();
}
});