Свой порядок сортировки li элементов.
Здравствуйте, сразу прощу прощения за нубский вопрос, но нужно сделать на сайте ручную сортировку в меню, но как я не знаю.
Есть список такого вида: <ul> <li class="cat-1">ссылка</li> <li class="cat-2">ссылка</li> <li class="cat-3"> <ul> <li></li> <li></li> <li></li> </ul> </li> <li class="cat-4"></li> .... </ul> Как с помощью js поменять последовательность вывода li элементов в строго заданном порядке используя уникальные классы, допустим cat-3, cat-1, cat-4, cat-2 и чтобы порядок можно было в ручную прописывать в скрипте. Заранее благодарен. |
Я так полагаю нужно использовать функции insertBefore() и removeChild().
Читайте: https://learn.javascript.ru/modifying-document. |
сортировка li
samtam,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script> window.addEventListener("DOMContentLoaded", function() { function c(a) { var b = -1; ["cat-3", "cat-1", "cat-4", "cat-2"].some(function(c, d) { -1 < a.indexOf(c) && (b = d); return -1 < b }); return b } var d = document.querySelector("ul"); [].slice.call(document.querySelectorAll("body > ul > li"), 0) .sort(function(a, b) { return c(a.className) - c(b.className) }) .forEach(function(a) { d.appendChild(a) }) }); </script> </head> <body> <ul> <li class="cat-1">1</li> <li class="cat-2">2</li> <li class="cat-3">3 <ul> <li></li> <li></li> <li></li> </ul> </li> <li class="cat-4">4</li> </ul> </body> </html> |
Рони, Спасибо большое, то что нужно.
|
Часовой пояс GMT +3, время: 01:57. |