Есть список и нужно его пронумеровать. Под пронумеровать подразумевается добавление классов: во 2 уровне ul
, например, сlass_2
, в 3 уровне ul
- сlass_3
.
Должно получится что-то типа такого.
Предполагаю, решение кроется в jQuery, но точно не знаю как сделать.
<ul class="class_1">
<li>
<ul class="class_2">
<li></li>
<li>
<ul class="class_3">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</li>
<li></li>
<li></li>
<li></li>
</ul>
</li>
<li>
<ul class="class_2">
<li></li>
<li>
<ul class="class_3">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</li>
<li>
<ul class="class_3">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</li>
<li>
<ul class="class_3">
<li></li>
<li></li>
</ul>
</li>
<li></li>
</ul>
</li>
<li></li>
</ul>
Например, так
function setClass(AList) {
var level = AList.data('level');
if (level)
return level;
var parent = $(AList.parent().closest('ul'));
if (parent.length)
var level = setClass(parent) + 1;
else
var level = 1;
AList.addClass('class_' + level).data({level: level});
return level;
}
$('ul:not(:has(ul))').each(function() {
setClass($(this));
});
.class_1 {
background-color: red;
}
.class_2 {
background-color: green;
}
.class_3 {
background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>
<ul>
<li></li>
<li>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</li>
<li></li>
<li></li>
<li></li>
</ul>
</li>
<li>
<ul>
<li></li>
<li>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</li>
<li>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</li>
<li>
<ul>
<li></li>
<li></li>
</ul>
</li>
<li></li>
</ul>
</li>
<li></li>
</ul>
Идея:
$('ul:not(:has(ul))')
. Достаточно просто пробежаться по всем первым потомкам каждого ul-a, предварительно установив класс для первого ul-a.
https://jsfiddle.net/lermon333/ep9wh2v9/
var index = 1;
var first = $('ul').first();
first.addClass(index + "_class");
index += 1;
setClass(first, index);
function setClass(parent, index) {
firstUlChilds = parent.find(">li>ul");
firstUlChilds.addClass(index + "_class");
index += 1;
if (firstUlChilds.length) {
firstUlChilds.each(function(i, el){
setClass($(el), index);
})
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, где достать адаптивный слайдер с эффектом 3D, чтобы сверстать примерно такую карусель http://takems/dXsYK
Возможно ли сделать так, чтобы отправлялся запрос с данными JSON на апи сайта, и там он искал с точностью похожие элементы, чтобы вы лучше поняли...
сори за глупый вопросне могу понять, как считать текст из textarea
Вот так почему-то отображается после нажатия на ссылку, как убрать?