Проблемы с изотопами - всегда сохраняйте элемент в верхнем левом углу после сортировки / фильтрации

Я использую изотоп для фильтрации и сортировки элементов по имени или категории, по убыванию или по возрастанию в основном контейнере.

Мне нужно сохранить первый элемент статичным, чтобы на него не влияли сортировка / фильтрация. Мне удалось это получить, но это работает для первого элемента, однако, когда добавлен определенный фильтр, первый элемент скрыт, и поэтому мне нужно, чтобы 2-й элемент (который будет отображаться как первый) стал статичным, поэтому я всегда имею статический элемент, видимый в верхнем левом углу.

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

            var $container = $('#container'),
                 filters = {};
                 $container.isotope({
                itemSelector: '.element',
                masonry: {
                    columnWidth: 260
                },
                getSortData: {
                    category: function($elem) {
                        if ($elem.is('.first_static')) {
                            return -1;
                        }
                        return $elem.attr('data-category');
                    },
                    date: function($elem) {
                        if ($elem.is('.first_static')) {
                            return -1;
                        }
                        return $elem.attr('data-expiry');
                    },
                    name: function($elem) {
                        if ($elem.is('.first_static')) {
                            return -1;
                        }
                        return $elem.find('.name').text();
                    },
                    first: function($elem) {
                        // sort by first_static first, then by original order
                        return ($elem.hasClass('first_static') ? -500 : 0) + $elem.index();
                    }
                },
                sortBy: 'first'
            });

Я работаю над JSFiddle ( http://jsfiddle.net/AbUgj/24/), чтобы продемонстрировать, что я пытаюсь сделать

2 ответа

Добавить новый класс с именем show_el затем попробуйте следующий код.

.show_el:first {
    display: static;
}

Давайте предположим, что у вас есть класс для всех видимых элементов, давайте назовем его visible-element, Затем вы можете определить это правило CSS:

.visible-element:first {
    display: static;
}

Вы должны убедиться, что все видимые элементы имеют visible-element класс и ни один из невидимых элементов не имеет visible-element класс хотя.

Другие вопросы по тегам