Конечно стоит уточнить несколько моментов.
Не совсем понял про первые 10 видимых DIV-ов. Они всегда (в любом случае) видны и к какой категории относятся? Они всегда одни и те же?
Короче голову сломал, чтобы понять задумку автора.
Как ее понял я... Есть много DIV-ов, каждый из которых принадлежит определенной категории. Их положение не обязательно по порядку (то есть категории перемешаны). При клике по заголовку категории, данный заголовок подсвечивается и отображаются первые 10 DIV-ов данной категории. Если в категории их больше 10, то появляется кнопка, "Показать остальные", при клике по которой отображаются остальные DIV-ы данной категории.
Так же имеется кнопка "Показать все категории", при клике по которой показываются так же первые 10 DIV-ов независимо от категории и кнопка, "Показать остальные", при клике по которой отображаются все остальные DIV-ы независимо от категории.
При повторном клике по заголовку категории - ничего не происходит.
Вот код целиком.
Код:
<style type="text/css">
.selected { background-color:#CCCCCC; }
.sp_links { width:230px; text-align:center; }
.sp_body { display:none; font-style:italic; border:1px solid #0033FF;}
.sp_links { cursor:pointer; font-weight:bold; text-decoration:underline;
color:#0000FF; margin:5px; border:1px solid #808080; border-radius:7px; }
.all_links { background-color:#FF9999; }
</style>
<div class="sp_links" id="sp">Показать все категории</div>
<div class="sp_links" id="sp_aaa">Категория AAA</div>
<div class="sp_links" id="sp_bbb">Категория BBB</div>
<div class="sp_links" id="sp_ccc">Категория CCC</div>
<div class="body_aaa sp_body">Текст AAA_1</div>
<div class="body_aaa sp_body">Текст AAA_2</div>
<div class="body_bbb sp_body">Текст BBB_1</div>
<div class="body_bbb sp_body">Текст BBB_2</div>
<div class="body_ccc sp_body">Текст CCC_1</div>
<div class="body_aaa sp_body">Текст AAA_3</div>
<div class="body_ccc sp_body">Текст CCC_2</div>
<div class="body_ccc sp_body">Текст CCC_3</div>
<div class="body_ccc sp_body">Текст CCC_4</div>
<div class="body_aaa sp_body">Текст AAA_4</div>
<div class="body_aaa sp_body">Текст AAA_5</div>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.sp_links').click(function(){
cat=$(this).attr("id").substr(2);
all='[class^=body'+cat+']';
if ($(this).hasClass("selected")!=true) {
$('.all_links').remove();
if ($(all).length>3) $(all).slice(-1).after('<div class="all_links" id="all'+cat+'">Показать остальные</div>');
$('.sp_body').slideUp('normal');
$(all).slice(0,3).slideDown('normal');
}
$('.sp_links').removeClass('selected');
$(this).addClass('selected');
return false;
});
$("body").on('click', '.all_links' , function(event) {
$('.all_links').remove();
all='[class^=body'+$(this).attr("id").substr(3)+']';
$(all).slideDown('normal');
});
});
</script>
P.S. В данном примере количество первоначально видимых спойлеров сделал 3 вместо 10 чтобы уменьшить код.