prepend переворачивает результат

194
26 октября 2017, 09:21

Делаю цикл, обрабатывая json массив, получаю в итоге переменную с кучей option которые нужно вставить в начало select, делаю prepend и он вставляет их перевернутыми. Пробовал append, там все нормально вставляет, только вот мне нужно в начало select
Код:

$.get( "http://127.0.0.1/admin/animations/get", { min: (last-1500), max: (last-1000)}, function( data ) { // Возвращает json типа { ['name' = 'test'], ['test1', 'test2', 'test2'] }
    data.forEach(function (v, i) {
        var group = $('<optgroup></optgroup>');
        group.attr('label', v['name']);
        group.attr('id', last-1000+i);  // last это последний id в select, делал для удобного удаления в будущем
        $.each(v['props'], function (s, p) {
            var option = $('<option></option>');
            option.val([v['name'], p]);
            option.text(p);
            group.append(option);
        });
        list.prepend(group); // Хочу вставить в начало select, но получается перевернутый результат, с 500 до 0 ид а должно быть наоборот.
    });
} , "json" );
Answer 1

Если бы ваши входные данные были массивом, то достаточно было бы просто проитерировать его в обратном порядке, например, с помощью data.reverse().forEach. Но поскольку это объект, то вариант решения - изначально сложить все созданный группы в промежуточный массив, а затем уже его целиком добавить в начало списка.
Итого, нечто вроде

var groups = [];
data.forEach(function (v, i) {
    var group = $('<optgroup></optgroup>');
    .....
    groups.push(group); 
});
list.prepend(groups);
READ ALSO
jquery активный chekbox

jquery активный chekbox

есть чекбоксы установленные на фильтр, мне нужна проверка если отмечен хоть один чекбокс , то скрыть определенный блокЯ отмечаю чекбокс,...

289
Оптимизация изображений в галерее

Оптимизация изображений в галерее

Доброго времени суток :)

191
Сверстать таблицу при помощи div

Сверстать таблицу при помощи div

Сделать предоставленную таблицу блочными элементами , с применением свойства CSS display: table | table-row | table-cell

268