Как сортировать по алфавиту ссылки

186
16 июня 2017, 11:08

Этим я отсортировал только текст, но ссылки остались на прежних местах. Как сделать чтобы текст ссылки соответствовал адресу ссылки после сортировки?

var x = $('ul li').length; 
var mas = []; 
var mas2 = []; 
$('ul li').each(function( index ) { 
  mas[index] = $(this).text(); 
 mas2[index] = $(this).find('a').attr('href'); 
}); 
mas.sort(); 
$( 'ul li' ).each(function( index ) { 
 $(this).find('a').text( mas[index]); 
  $(this).find('a').attr( 'href', mas2[index] ); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<ul> 
  <li><a href="h1">7</a></li> 
  <li><a href="h2">6</a></li> 
  <li><a href="h3">5</a></li> 
  <li><a href="h4">4</a></li> 
  <li><a href="h5">3</a></li> 
  <li><a href="h6">2</a></li> 
  <li><a href="h7">1</a></li> 
</ul>

Answer 1

У метода сортировки есть параметр — функция сравнения, возвращающая строку, по которой алгоритм будет сравнивать элементы массива. В этом массиве содержатся потомки выбранного <ul> — теги <li>. Вставка отсортированной последовательности обратно на страничку производится присвоением свойству innerHTML разметки, составляющей наши отсортированные элементы. Это, кажется, самый простой способ замены содержимого какого-либо тега.

Код оказалось проще написать без применения jQuery, поэтому без неё.

var container = document.getElementById('cont'); 
var elements = [].slice.call(container.children); 
elements.sort(el => el.textContent); 
container.innerHTML = elements.map(el => el.outerHTML).join("");
<ul id="cont"> 
  <li><a href="h1">7</a></li> 
  <li><a href="h2">6</a></li> 
  <li><a href="h3">5</a></li> 
  <li><a href="h4">4</a></li> 
  <li><a href="h5">3</a></li> 
  <li><a href="h6">2</a></li> 
  <li><a href="h7">1</a></li> 
</ul>

READ ALSO
JavaScript Object/ Class/ Getter methods

JavaScript Object/ Class/ Getter methods

Добрый день) Мне нужно выполнить эти задания что бы пройти собеседование в одной компаний, на первую работу) Вот задания:

239
Получить файл удаленно по маске!

Получить файл удаленно по маске!

Люди добрые, хочу просто получить удаленно файл по маске с сервера и сохранить к себе в папкуВсе, что перед

195
Как скрыть кнопку от всех, кроме пользователя у которого

Как скрыть кнопку от всех, кроме пользователя у которого

Как скрыть кнопку от всех, кроме пользователя, который находится в таблице users и имеет e-mail: igor@gmailcom Возможно такое реализовать? К примеру, такая...

248