2013-12-17 4 views
2

Я попробовал этотJQuery Изотоп сортировать после добавления

$("#add").click(function(){ 
    var $newIems = $("<div class='post-body post item'>itemName</div>") 
    $(".items").isotope("append", $newIems, true); 
}); 

$("#sort").click(function(){ 
    $('.items').isotope({ 
     getSortData : { 
      content: function ($elem) { 
       return $elem.find('.post-content').text(); 
      } 
     } 
    }); 
    $('.items').isotope({ sortBy : 'date' }); 
    $('.items').isotope('reLayout') 

}); 

Но детали не получите отсортированы. возможно ли вообще добавлять новые предметы в контейнер изотопов и сортировать их после? То, что я хочу сделать, это просто добавить новые элементы в верхней части списка изотопов straightDown.

Update1:
Товар уже присоединени на вершине с помощью PREPEND().
Мой код preend равен Hady (ответ на второй ответ ниже этого вопроса).
Но это еще добавляет во втором пункте, потому что привычка установить верхнее значение CSS, вот DOM:

<div class="items isotope" style="position: relative; overflow: hidden; height: 354px;"> 
     <div class="item isotope-item" style="position: absolute;">addedItem</div> 
     <div class="item isotope-item" style="position: absolute; left: 0px; top: 0px;">item1</div> 
     <div class="item isotope-item" style="position: absolute; left: 0px; top: 81px;">item2</div> 
     <div class="item isotope-item" style="position: absolute; left: 0px; top: 172px;">item3</div> 
</div> 

и, как вы можете увидеть, существующие элементы также не получил дополнительный + верхний пиксель. Поэтому, я думаю, мне нужно вызвать reLayout() после добавления нового элемента?

ответ

0

Я думаю, вы хотите использовать метод addItems. Проверьте documentation. Там также есть demo, который вы можете попробовать.

+0

ну, я думаю, у не понял вопрос. элемент добавляется, но внизу, я хочу его сверху. поэтому мой вопрос заключался в том, что есть возможность вызвать сортировку после добавления или что-то в этом роде, потому что она не работает с данным кодом – spyfx

+0

Ну, по этой ссылке, которую я разместил выше, в демонстрационном примере есть пример использования «preend» - это должно сделать trick – koosa

0

Если все, что вы после это вставить новые элементы в начале вашего контейнера, то вам нужно препенда вновь созданные пункты вместо добавляющего.

$("#add").click(function(){ 
    var $newIems = $("<div class='post-body post item'>itemName</div>") 
    $(".items").prepend($newIems).isotope('reloadItems');  
    return false; 
}); 
+0

Он добавляется в начале контейнера, но не имеет значения css, что означает, что он добавляется непосредственно за вторым. следует ли мне позвонить после reloadItems, reLayout? редактирование: нет анимации вставки, а существующие элементы не перемещаются вниз, а также – spyfx

+0

Возможно ли, что вы передаете свой текущий код и структуру HTML на jsFiddle или обновите свой вопрос? – Hady

+0

обновил вопрос – spyfx

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