【发布时间】:2014-01-17 12:03:34
【问题描述】:
我正在使用同位素在主容器中按名称、日期或类别、降序或升序过滤和排序元素。
我需要将第一个元素保留在左上角,使其不受排序的影响。除了按升序/降序排序时,我已经成功地完成了这项工作。第一个元素已排序,在进行了许多不同的排序选择后,页面上会出现间隙。当我查看差距所在的代码时,它的第一个元素的代码在页面上的各个不同位置重复,具体取决于进行了多少排序选择。
如何让第一个元素表现出来?下面是我的代码。
//isotope set up
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'
});
//sort page elements
$('.sort a').click(function(e) {
var $this = $(this);
if ($this.hasClass('selected')) {
return false;
}
var $sortSet = $this.parents('.sort-set');
$sortSet.find('.selected').removeClass('selected');
$this.addClass('selected');
var sorts = {},
key = $sortSet.attr('data-option-key'),
value = $this.attr('data-option-value');
value = value === 'false' ? false : value;
sorts[ key ] = value;
$container.isotope(sorts).isotope('reloadItems');
return false;
});
我正在开发一个 JSFiddle (http://jsfiddle.net/AbUgj/30/) 来展示我想要做什么。无论过滤或排序如何,左上角都应始终有一个蓝色框。
HTML
<h3>Sorting</h3><br />
<div class="option-combo sort">
<ul data-filter-group="sort" class="sort sort-set clearfix" data-option-key="sortBy">
<li><a href="#" data-option-value="name">Name</a></li>
<li><a href="#" data-option-value="category">Category</a></li>
<li><a href="#" data-option-value="date">Expiry Date</a></li>
</ul>
</div>
<div class="option-combo sort">
<ul data-filter-group="sort" class="sort sort-set clearfix" data-option-key="sortAscending">
<li><a href="#" data-option-value="true" id="sortByCatAsc">Ascending</a></li>
<li><a href="#" data-option-value="false" id="sortByCatDesc">Descending</a></li>
</ul>
</div>
【问题讨论】:
-
尝试使用它,但不适合我想要的。
标签: jquery sorting jquery-isotope