Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Фильтрация и сортировка (https://javascript.ru/forum/dom-window/61809-filtraciya-i-sortirovka.html)

nihaha 10.03.2016 02:07

Фильтрация и сортировка
 
Добрый вечер. Столкнулся со сложностью во время сортировки.
У меня есть несколько блоков, которые я сортирую от большего к меньшему и наоборот. Сортирую как числа и все работает замечательно. Однако, среди блоков есть такие, где числовых значений нет, т.е. поле, по которому я сортирую, пустое. Эти блоки также участвуют в сортировке, приравниваясь по значению к нулю.
Моя задача - исключить такие блоки из сортировки, но не удалять их вовсе. Если я фильрую, а потом сортирую, то эти "пустые" блоки пропадают из DOM. Подскажите, пожалуйста, ход мысли, что сделать, чтоб блоки просто оставались в конце списка, не участвуя в сртировке.

Вот пример сортироки, нужно чтоб оранжевый блок не участвовал в сортировке и не удалялся - https://jsfiddle.net/ptL6jugn/2/

Спасибо

Deff 10.03.2016 02:11

nihaha,
Диапазон возможных числовых значений каков ?

nihaha 10.03.2016 02:14

Все больше нуля, в пределах 100000

Deff 10.03.2016 02:19

Вариант:
var divs = $("div.column").find("div.value").not(":empty").parents("div.column");

nihaha 10.03.2016 02:24

Тут, по сути, происходит то же самое, что и в моем коде. Да, выборка идет по непустым значениям, но пустой блок все так же оказывается то в начале, то в конце дерева.
Как бы его так закрепить в конце, что ли...

Deff 10.03.2016 02:27

nihaha,
Дык при таком задании массива объектов пустые вроде как вообще исключены из последущей сортировки ?
Можно наоборот, найти пустые и переставить сначало такие блоки в самый конец
var emptys = $("div.column").find("div.value:empty").parents("div.column");

(можно вообще при клике кнопок сортировки, - пустые сразу изъять(emptys = emptys.remove()) со страницы и вставить их в конец по окончании сортировки

nihaha 10.03.2016 02:34

Да вот может и исключаются объекты, но остальные сортируются вокруг... я хз чего так.
Не совсем понятна Ваша идея с emptys. Каким образом можно из переставить их в конец?
Что-то типа
$('.wrapper').append(emptys)?

Deff 10.03.2016 02:39

Цитата:

Сообщение от Deff
(можно вообще при клике кнопок сортировки, - пустые сразу изъять(emptys = emptys.remove()) со страницы и вставить их в конец по окончании сортировки

Так к примеру
Потом, после сортировки вставить emptys.insertAfter("div.column:last")

nihaha 10.03.2016 02:53

То ли лыжи не едут... но если дописать после объявления emptys console.log(emptys), то получаем пустой массив jQuery ( )
Не доверяю я что-то :empty

Deff 10.03.2016 03:17

nihaha,
У Вас там пробелы и пустая строка потому - не пустая (не :empty)
<div class="value">
               </div>

Тады нун искать div.value без цифр по each с регуляркой или $.trim()
Либо сразу проставить в HTML для пустых так:
<div class="value"></div>


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