Вот что должно произойти.
1. Получить атрибут rel по нажатой ссылке
2. Для каждого div с классом 'entry':
(i) Получить левую позицию
(ii) Рассчитайте его внешнюю высоту
(iii) Перебрать все экземпляры «a.tag_filter». Если он находит в строке «rel» ту же строку, что и та, на которую щелкнули ранее, добавьте 1 к «V» и выйдите из цикла.
(iv) Если «V» равно 0 после цикла, мы знаем, что тот же тег отсутствует в этом «.entry», поэтому затухайте.
(v) Как только затухание закончится, пройдитесь по всем «.entry» после затухающего и получите их «левые» значения.
(vi) Если левое значение исчезнувшей записи = левое значение текущего '.entry', тогда переместите его в новое верхнее значение.
Что сейчас происходит.
Он проходит через все правильные элементы «.entry» и затухает, и только после того, как все они исчезнут, он перемещает оставшиеся элементы «.entry».
После того, как каждый элемент исчезает, я бы хотел, чтобы цикл изменения положения работал так, чтобы он по существу позиционировал оставшиеся элементы по одному, а не все сразу.
Вот мой код РЕДАКТИРОВАТЬ:
$('a.tag_filter').click(function(e){
e.preventDefault();
var selectTag = $(this).attr('rel');
$('div.spotlight_entry_container_grid').each(function(i){
var $entry = $(this);
var tagArray = [];
$('a.tag_filter', this).each(function(){
tagArray.push ($(this).attr('rel'));
});
if($.inArray(selectTag,tagArray) == -1){
var leftPos = $entry.css("left");
var topPos = $entry.css("top");
$entry.fadeOut(1000, function(){
var nextLeftPos;
var nextTopPos;
$('div.spotlight_entry_container_grid:gt('+i+')').each(function(j) {
var $laterEntry = $(this);
nextLeftPos = $laterEntry.css("left");
nextTopPos = $laterEntry.css("top");
//we need to keep the entries in their columns.
//matching left values will do it. No need to animate left values.
if(leftPos == nextLeftPos){
$laterEntry.animate({ top: topPos});
}
});
});
}
});
});
Надеюсь, это имеет смысл
Любая помощь будет оценена!
Я, вероятно, делаю что-то сумасшедшее, но я просто не могу это заметить.
Спасибо