#javascript #jquery #html #arrays #sorting
#javascript #jquery #HTML #массивы #сортировка
Вопрос:
Я пытаюсь отсортировать список html по расстоянию, я не хочу указывать свойство distance в своей разметке. Что я делаю, так это то, что я отображаю html-список хранилища, в js я создаю массив, в котором я сохраняю хранилище и расстояние.
locations = [];
locations.push({
'store': stores[i],
'cordinate': Math.random()
});
Я сортирую это с помощью этого
locations.sort(dynamicSort('cordinate'));
function dynamicSort(property) {
var sortOrder = 1;
return function(a, b) {
var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
return result * sortOrder;
}
}
Вот где я застрял, как я могу отсортировать свой html с помощью этого массива? Ключевым моментом здесь является то, что я не хочу загромождать свой html, устанавливая там cordinate.
Редактировать
Вопрос заключался в сортировке выходного html с порядком сортировки, заполненным в массиве. Там я удалил html и другие js, которые я использовал только из-за того, что ленился заполнять разметку.
Комментарии:
1. @hindmost для этого не имеет отношения к разметке se html. Но ладно.
2. Используемые вами шаблоны Handlebars весьма актуальны для вашего вопроса.
3. вы имеете в виду что-то вроде этого: jsfiddle.net/znttxbwm ?
4. сохраните элемент html в объекте ‘locations’, затем вы можете получить к нему отношение
5. @AdiDarachi У меня есть идентификатор в идентификаторе, который имеет ссылку на фактический элемент html, но вопрос в том, как мне это сделать?
Ответ №1:
По сути, все, что вам нужно сделать, это вызвать append для элементов html в порядке сортировки.
Это добавит элемент в конец элементов html.
var sortHTML = function(locations) {
$.each(locations, function(i, location) {
var targetElement = $('#' location.store.id);
targetElement.parent().append(targetElement)
});
};
sortHTML(locations);
скрипка здесь: https://jsfiddle.net/wbcj026x/1 /
Комментарии:
1. На самом деле это больше похоже на то, что я ищу. Но нет способа просто отсортировать? Я думаю, может ли это быть проблемой с производительностью.
2. чем это отличается от моего ответа?, он использует ту же функцию добавления
3. @Dejan.S, ответ отрицательный, нет способа перемещать html-элементы в DOM, а затем добавлять / отсоединять (добавление / удаление элемента из DOM)
4. @madalinivascu, разница в том, что вы сделали это во время выполнения, а мою функцию можно использовать после выполнения.