Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2016, 03:50
Новичок на форуме
Отправить личное сообщение для samtam Посмотреть профиль Найти все сообщения от samtam
 
Регистрация: 28.08.2016
Сообщений: 3

Свой порядок сортировки 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 и чтобы порядок можно было в ручную прописывать в скрипте. Заранее благодарен.

Последний раз редактировалось samtam, 28.08.2016 в 04:00.
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2016, 07:50
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Я так полагаю нужно использовать функции insertBefore() и removeChild().
Читайте: https://learn.javascript.ru/modifying-document.

Последний раз редактировалось Strongman, 28.08.2016 в 07:52.
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2016, 09:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

сортировка 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>
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2016, 14:30
Новичок на форуме
Отправить личное сообщение для samtam Посмотреть профиль Найти все сообщения от samtam
 
Регистрация: 28.08.2016
Сообщений: 3

Рони, Спасибо большое, то что нужно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
порядок сортировки в массиве изменяется. DarkGuy AJAX и COMET 2 20.05.2013 15:50
Как получить новый порядок элементов в сортируемом списке Непонятливый jQuery 1 11.10.2012 12:43
Изменить порядок элементов sunlord jQuery 2 04.02.2012 16:38
Порядок загрузки элементов VeliaR Элементы интерфейса 2 28.04.2011 07:18
порядок сортировки ключей в объекте indieman Javascript под браузер 4 27.12.2010 21:48