2015-04-11 2 views
0

У меня есть серия div, которые загружаются с помощью PHP. Они переупорядочиваются при загрузке в jQuery и могут быть переупорядочены с помощью кнопок. Я хочу вставить некоторый HTML после n-го div (например: всегда после второго, независимо от порядка). Я пробовал:Вставить HTML после nth div, после того как divs переупорядочены

$('#card-box').children(':eq(1)').after('<b>test</b>'); 

Прямо под линиями, где divs переупорядочиваются. Но он помещает его под div, который является вторым в PHP, прежде чем они будут перенаправлены jQuery, и после сортировки с помощью кнопки он перемещается в начало.

Разделители переходят в jQuery по атрибуту data-id. Как так:

var div = $('#card-box'); 
var listitems = div.children('div.card').get(); 
listitems.sort(function (a, b) { 
    return (+$(a).attr('data-id') > +$(b).attr('data-id')) ? -1 : (+$(a).attr('data-id') < +$(b).attr('data-id')) ? 1 : 0; 
}); 
+0

Что вы имеете в виду заказана? визуально используя позицию css или реальный порядок на дереве dom? –

+0

@FaresM. переупорядочивается на dom в jquery как: 'var div = $ ('# card-box'); var listitems = div.children ('div.card'). Get(); listitems.sort (функция (a, b) { return (+ $ (a) .attr ('data-id')> + $ (b) .attr ('data-id'))? -1: (+ $ (a) .attr ('data-id') <+ $ (b) .attr ('data-id'))? 1: 0; }); ' – iisurge

+0

Я знаю в jQuery. Можете ли вы опубликовать некоторый релевантный код вашей функции сортировки? –

ответ

0

Вам нужно повторно вводить их в DOM после сортировки

var div = $('#card-box'), 
    listitems = div.children('div.card'); 

listitems.sort(function (a, b) {.... 
}); 

listitems.detach().appendTo(div); 
div.children(':eq(1)').after('<b>test</b>'); 

Fiddle

+0

Это не сработало. У меня уже есть рабочая строка для обновления dom: '$ .each (listitems, function (idx, itm) {div.append (itm);}); 'Моя проблема заключается в вставке html между divs – iisurge

+0

Вам необходимо отделить и повторно заново отсортировать весь отсортированный элемент, не вставляя его по одному. Посмотрите на [Fiddle] (http://jsfiddle.net/n39b6sLy/) Я написал, что он работает. –

+0

Спасибо, я забыл удалить '.get();' after listitems. он работает сейчас! – iisurge

Смежные вопросы