Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сортировка. Функция срабатывает один раз. (https://javascript.ru/forum/misc/66220-sortirovka-funkciya-srabatyvaet-odin-raz.html)

SFproG 01.12.2016 20:37

Сортировка. Функция срабатывает один раз.
 
Добрый вечер! Функция сортировки, при нажатии одной из ссылок (кнопок), больше не срабатывает, при нажатии второй ссылки. Приходится перезагружать страницу.
Хотелось бы чтобы ссылки работали постоянно без перезагрузки страницы.
Т.е. чтобы кликать можно было бесконечно по ссылкам и сортировка работала постоянно в нужном направлении без перезагрузки страницы.

Подскажите как подправить код. Спасибо!

Код примера:

<div>
Сортировать по цене: 
	<a href="#" onclick="sort_price('spu'); return false;">по возрастанию</a> / 
	<a href="#" onclick="sort_price('spd'); return false;">по убыванию</a>
</div>

<br />

<div class="list-cat">
    <div class="block_single" data-price="5">5</div>
	<div class="block_single" data-price="50">50</div>
	<div class="block_single" data-price="11">11</div>
	<div class="block_single" data-price="8">8</div>
	<div class="block_single" data-price="200">200</div>
</div>

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script>
//Сортировка по цене: возрастание/убывание
function sort_price(srt) {
					
$('.list-cat').find('.block_single').sort(function (a, b) {
											  
a = a.getAttribute('data-price');
b = b.getAttribute('data-price');											  
											  
    if (srt == 'spu') {return +a - +b;} //возрастание
	if (srt == 'spd') {return +b - +a;} //убывание
})
.replaceAll($('.list-cat'));

}
</script>

Coriolan161 01.12.2016 21:02

SFproG,
Убери эту срань из онкликов
return false;

Просто эти штуки отменяют действие по-умолчанию. Короче один раз нажмешь а следующие разы обработки события не произойдет

SFproG 01.12.2016 21:24

Coriolan161, убрал. Не помогает.
По-моему, "return false", просто отменяет переход по линку (href).

рони 02.12.2016 06:11

Цитата:

Сообщение от SFproG
.replaceAll($('.list-cat'));

.appendTo('.list-cat');

SFproG 02.12.2016 16:06

рони,
Да, отлично работает в данном примере. Но по идее функция "appendTo" должна добавлять новые элементы в конец текущих.
На "боевом" сайте у меня так и происходит. Список записей фильтруется и в конец добавляются клоны этих записей, при каждом нажатии на "кнопки" фильтров.

Может с записями на сайте что-то не то. Буду смотреть...

рони 02.12.2016 16:51

SFproG,
не осилил

SFproG 02.12.2016 19:02

рони,
Вот сайт: http://антоновкишилов.рф/katalog/ Функция сортировки создает "клоны" записей (при клике на кнопки).

Думаю, это проблема сайта. Не скрипта.

рони 02.12.2016 19:28

SFproG,
слишком много jquery разных версий

SFproG 03.12.2016 07:10

рони,
Одна 1.8.1
Была еще одна. WordPress свою вставлял. Убрал.

Локально нормально работает. На хостинге глючит. Перекачал полностью шаблон - заработало.

В общем, причину так и не понял).
И до сих пор не понял разницу действия "appendTo" и "replaceAll".
Обе функции перезаписывают записи. Хотя, первая должна добавлять в конец новые.

Спасибо, за подсказку, рони!

рони 03.12.2016 08:46

Цитата:

Сообщение от SFproG
Хотя, первая должна добавлять в конец новые

новые откуда возьмутся, если мы добавили прежние, только в новом порядке?


Часовой пояс GMT +3, время: 17:51.