Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.12.2016, 20:37
Интересующийся
Отправить личное сообщение для SFproG Посмотреть профиль Найти все сообщения от SFproG
 
Регистрация: 08.02.2013
Сообщений: 16

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

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

Код примера:

<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>
Ответить с цитированием
  #2 (permalink)  
Старый 01.12.2016, 21:02
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

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

Просто эти штуки отменяют действие по-умолчанию. Короче один раз нажмешь а следующие разы обработки события не произойдет
Ответить с цитированием
  #3 (permalink)  
Старый 01.12.2016, 21:24
Интересующийся
Отправить личное сообщение для SFproG Посмотреть профиль Найти все сообщения от SFproG
 
Регистрация: 08.02.2013
Сообщений: 16

Coriolan161, убрал. Не помогает.
По-моему, "return false", просто отменяет переход по линку (href).
Ответить с цитированием
  #4 (permalink)  
Старый 02.12.2016, 06:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от SFproG
.replaceAll($('.list-cat'));
.appendTo('.list-cat');
Ответить с цитированием
  #5 (permalink)  
Старый 02.12.2016, 16:06
Интересующийся
Отправить личное сообщение для SFproG Посмотреть профиль Найти все сообщения от SFproG
 
Регистрация: 08.02.2013
Сообщений: 16

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

Может с записями на сайте что-то не то. Буду смотреть...
Ответить с цитированием
  #6 (permalink)  
Старый 02.12.2016, 16:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

SFproG,
не осилил
Ответить с цитированием
  #7 (permalink)  
Старый 02.12.2016, 19:02
Интересующийся
Отправить личное сообщение для SFproG Посмотреть профиль Найти все сообщения от SFproG
 
Регистрация: 08.02.2013
Сообщений: 16

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

Думаю, это проблема сайта. Не скрипта.
Ответить с цитированием
  #8 (permalink)  
Старый 02.12.2016, 19:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

SFproG,
слишком много jquery разных версий
Ответить с цитированием
  #9 (permalink)  
Старый 03.12.2016, 07:10
Интересующийся
Отправить личное сообщение для SFproG Посмотреть профиль Найти все сообщения от SFproG
 
Регистрация: 08.02.2013
Сообщений: 16

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

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

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

Спасибо, за подсказку, рони!
Ответить с цитированием
  #10 (permalink)  
Старый 03.12.2016, 08:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от SFproG
Хотя, первая должна добавлять в конец новые
новые откуда возьмутся, если мы добавили прежние, только в новом порядке?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие срабатывает один раз бещ перезагрузки Alexander Belov Events/DOM/Window 1 03.08.2015 12:14
Jquery ui-slider & Jquery selectbox, Слайдер срабатывает всего 1 раз Micher jQuery 4 31.01.2014 13:07
Выполнение кода только один раз в несколько секунд. Threaded_Inquisitor Элементы интерфейса 7 18.10.2013 09:15
Почему функция срабатывает один раз? Bogdan808 Javascript под браузер 4 06.09.2010 23:41
Чтоб ссылка появлялась один раз для каждого пользователя (по IP или Cookies) Sequoia Общие вопросы Javascript 2 28.01.2010 19:16