Ограничить список до нужного ко-ва элементов
Добрый вечер.
У меня появилась следующая задача: На главной странице сайта двумя циклами выводятся категории и их дочерние категории. <ul> начало первого цикла <li>Название категории</li> <ul> начало второго цикла цикла <li>Название подкатегории</li> .... конец второго цикла </ul> конец первого цикла </ul> Как-то так. Так вот, так как ко-во дочерних категорий в каждом его родителе может быть разное, мне бы хотелось сделать джаваскриптом простую функцию скрыть/показать все, а по умолчанию, чтоб выводилось по 5 подкатегорий, например. Что скажете? |
Dizzy,
а нарисуйте html |
Так?
По умолчанию выводится по три дочерних категории у каждого родителя. По клику на ссылку «Показать остальные дочерние категории» — показать остальные дочерние, которые относятся этому родителю. <html> <head> <meta charset="UTF-8"> </head> <body> <ul> <li>Название родительской категории</li> <ul> <li>Название дочерней категории 1</li> <li>Название дочерней категории 2</li> <li>Название дочерней категории 2</li> <li>Показать остальные дочерние категории</li> </ul> <li>Название родительской категории 2</li> <ul> <li>Название дочерней категории 1</li> <li>Название дочерней категории 2</li> <li>Название дочерней категории 3</li> <li>Показать остальные дочерние категории</li> </ul> </ul> </body> </html> |
Dizzy,
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
.gold ~ li{
display: none;
}
.red{
background-color: #FF0000;
cursor: pointer;
opacity: 0.5
}
.gold{
opacity: 1;
background-color: #FFD700;
}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
<ul>
<li>Название родительской категории</li>
<ul>
<li>Название дочерней категории 1</li>
<li>Название дочерней категории 2</li>
<li>Название дочерней категории 2</li>
<li>Название дочерней категории 1</li>
<li>Название дочерней категории 2</li>
<li>Название дочерней категории 2</li>
</ul>
<li>Название родительской категории 2</li>
<ul>
<li>Название дочерней категории 1</li>
<li>Название дочерней категории 2</li>
<li>Название дочерней категории 3</li>
<li>Название дочерней категории 1</li>
<li>Название дочерней категории 2</li>
<li>Название дочерней категории 2</li>
</ul>
</ul>
<script>
$("li + ul").each(function () {
$("li:eq(2)", this).after(
$("<li/>", {
"text": "Показать остальные дочерние категории",
"click": function (event) {
$(this).toggleClass("gold")
},
"class": "gold red"
}))
});
</script>
</body>
</html>
|
Благодарю.
|
Прошу прощения за, возможно, дурацкий вопрос. Ещё раз нужна помощь.
Немного поменялась структура и добавились классы. Я сколько не пытался крутить — правильно не получается. Структура документа:
<div class="general">
<ul class="list">
<li class="group-content " style="height: 320px;">
<h2><a href="#" title="">Название родительской категории</a></h2>
<div class="childlist-wrapper">
<ul class="childlist last">
<li><a href="#" title="#">Название дочерней категории 1</a></li>
<li><a href="#" title="#">Название дочерней категории 2</a></li>
<li><a href="#" title="#">Название дочерней категории 3</a></li>
<li>
<a class="see-all" href="#" title="#" >
<span>Показать все</span>
</a>
</li>
</ul>
</div>
</li>
<li class="group-content " style="height: 320px;">
<h2><a href="#" title="">Название родительской категории 2</a></h2>
<div class="childlist-wrapper">
<ul class="childlist last">
<li><a href="#" title="#">Название дочерней категории 1</a></li>
<li><a href="#" title="#">Название дочерней категории 2</a></li>
<li><a href="#" title="#">Название дочерней категории 3</a></li>
<li>
<a class="see-all" href="#" title="#" >
<span>Показать все</span>
</a>
</li>
</ul>
</div>
</li>
</ul>
</div>
|
Dizzy,
Показать все что должно показать? |
Dizzy,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.childlist.last li:nth-child(n + 5){
display: none;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function ()
{
$(".childlist-wrapper ul").each(function ()
{
$("li:eq(2)", this).after(
$("<li/>",
{
"html": '<a class="see-all" href="#" title="#" ><span>Показать все</span></a>'
}
)
)
}
);
$('.see-all').click(function (event)
{
event.preventDefault()
$(this).parent().nextAll().slideToggle("slow")
}
)
}
)
</script>
</head>
<body>
<div class="general">
<ul class="list">
<li class="group-content " style="height: 320px;">
<h2><a href="#" title="">Название родительской категории</a></h2>
<div class="childlist-wrapper">
<ul class="childlist last">
<li><a href="#" title="#">Название дочерней категории 1</a></li>
<li><a href="#" title="#">Название дочерней категории 2</a></li>
<li><a href="#" title="#">Название дочерней категории 3</a></li>
<li><a href="#" title="#">Название дочерней категории 1</a></li>
<li><a href="#" title="#">Название дочерней категории 2</a></li>
<li><a href="#" title="#">Название дочерней категории 3</a></li>
</ul>
</div>
</li>
<li class="group-content " style="height: 320px;">
<h2><a href="#" title="">Название родительской категории 2</a></h2>
<div class="childlist-wrapper">
<ul class="childlist last">
<li><a href="#" title="#">Название дочерней категории 1</a></li>
<li><a href="#" title="#">Название дочерней категории 2</a></li>
<li><a href="#" title="#">Название дочерней категории 3</a></li>
<li><a href="#" title="#">Название дочерней категории 1</a></li>
<li><a href="#" title="#">Название дочерней категории 2</a></li>
<li><a href="#" title="#">Название дочерней категории 3</a></li>
</ul>
</div>
</li>
</ul>
</div>
</body>
</html>
|
Цитата:
|
| Часовой пояс GMT +3, время: 18:26. |