Фильтрация и сортировка
Добрый вечер. Столкнулся со сложностью во время сортировки.
У меня есть несколько блоков, которые я сортирую от большего к меньшему и наоборот. Сортирую как числа и все работает замечательно. Однако, среди блоков есть такие, где числовых значений нет, т.е. поле, по которому я сортирую, пустое. Эти блоки также участвуют в сортировке, приравниваясь по значению к нулю. Моя задача - исключить такие блоки из сортировки, но не удалять их вовсе. Если я фильрую, а потом сортирую, то эти "пустые" блоки пропадают из DOM. Подскажите, пожалуйста, ход мысли, что сделать, чтоб блоки просто оставались в конце списка, не участвуя в сртировке. Вот пример сортироки, нужно чтоб оранжевый блок не участвовал в сортировке и не удалялся - https://jsfiddle.net/ptL6jugn/2/ Спасибо |
nihaha,
Диапазон возможных числовых значений каков ? |
Все больше нуля, в пределах 100000
|
Вариант:
var divs = $("div.column").find("div.value").not(":empty").parents("div.column"); |
Тут, по сути, происходит то же самое, что и в моем коде. Да, выборка идет по непустым значениям, но пустой блок все так же оказывается то в начале, то в конце дерева.
Как бы его так закрепить в конце, что ли... |
nihaha,
Дык при таком задании массива объектов пустые вроде как вообще исключены из последущей сортировки ? Можно наоборот, найти пустые и переставить сначало такие блоки в самый конец var emptys = $("div.column").find("div.value:empty").parents("div.column"); (можно вообще при клике кнопок сортировки, - пустые сразу изъять(emptys = emptys.remove()) со страницы и вставить их в конец по окончании сортировки |
Да вот может и исключаются объекты, но остальные сортируются вокруг... я хз чего так.
Не совсем понятна Ваша идея с emptys. Каким образом можно из переставить их в конец? Что-то типа $('.wrapper').append(emptys)? |
Цитата:
Потом, после сортировки вставить emptys.insertAfter("div.column:last") |
То ли лыжи не едут... но если дописать после объявления emptys console.log(emptys), то получаем пустой массив jQuery ( )
Не доверяю я что-то :empty |
nihaha,
У Вас там пробелы и пустая строка потому - не пустая (не :empty) <div class="value"> </div> Тады нун искать div.value без цифр по each с регуляркой или $.trim() Либо сразу проставить в HTML для пустых так: <div class="value"></div> |
Часовой пояс GMT +3, время: 13:52. |