我正在尝试在我正在构建的网站上使用jQuery同位素插件(http://isotope.metafizzy.co)。从本质上讲,我试图做的是过滤结果,而我已经设法做到了。但是,当我过滤结果时,我不希望其他结果消失,我只希望过滤后的选项出现在前面。
我已经为这件事挠头好几个小时了。这是我的jQuery:
$(function(){
var $container = $('#cards');
$container.isotope({
itemSelector : '.blank'
});
var $optionSets = $('#options .option-set'),
$optionLinks = $optionSets.find('a');
$optionLinks.click(function(){
var $this = $(this);
if ( $this.hasClass('selected') ) {
return false;
}
var $optionSet = $this.parents('.option-set');
$optionSet.find('.selected').removeClass('selected');
$this.addClass('selected');
var options = {},
key = $optionSet.attr('data-option-key'),
value = $this.attr('data-option-value');
value = value === 'false' ? false : value;
options[ key ] = value;
if ( key === 'layoutMode' && typeof changeLayoutMode === 'function' ) {
changeLayoutMode( $this, options )
} else {
$container.isotope( options );
}
return false;
});
});和我的(简化的) html:
<section id="options" class="clearfix">
<ul id="filters" class="option-set clearfix" data-option-key="filter">
<li><a href="#filter" data-option-value="*" class="selected">show all</a></li>
<li><a href="#filter" data-option-value=".christmas">Christmas</a></li>
<li><a href="#filter" data-option-value=".birthday">Birthday</a></li>
<li><a href="#filter" data-option-value=".thank-you">Thank You</a></li>
</ul>
<div id="cards">
<div class="blank christmas"></div>
<div class="blank christmas"></div>
<div class="blank christmas"></div>
<div class="blank christmas"></div>
<div class="blank birthday"></div>
<div class="blank birthday"></div>
<div class="blank birthday"></div>
<div class="blank thank-you"></div>
<div class="blank thank-you"></div>和JSfiddle上的一个链接(虽然动画似乎不工作-但它在我的网站上工作,所以没有问题):http://jsfiddle.net/Yvv5x/3/
任何帮助都将不胜感激。
发布于 2013-12-01 00:24:55
这是有效的fiddle。
你实际上不需要过滤,但需要排序。因此,我创建了三种不同的排序情况(圣诞节、生日和谢谢),每个项目都有相应的data-*属性(最终您可以通过代码设置该属性)。
再说,你打电话给我
$container.isotope({
itemSelector : '.blank'
});在一开始,没有所有需要的选项。
https://stackoverflow.com/questions/19001708
复制相似问题