我正在尝试构建一个过滤工具,一次过滤 2 个标准。我有:
<ul class="filters">
<li class="colors"><a class="blue" href="#filter"></a></li>
<li class="colors"><a class="red" href="#filter"></a></li>
</ul>
<ul class="filters">
<li class="shapes"><a class="square" href="#filter"></a></li>
<li class="shapes"><a class="circle" href="#filter"></a></li>
</ul>
<div class="dojofilter blue square"></div>
<div class="dojofilter blue circle"></div>
<div class="dojofilter red square"></div>
和 jQuery:
$('.filters li').click(function () {
var liClass = $(this).attr('class');
$('.' + liClass).removeClass('selected');
$(this).addClass('selected');
});
$('.filters li').click(function () {
var SelClass = $('.selected').children('a').attr('class');
var Others = $('div.dojofilter').not('.' + SelClass);
$('div.' + SelClass).animate({
height: '480px',
width: '310px',
opacity: '1',
});
$(Others).animate({
height: '0px',
width: '0px',
opacity: '0'
});
因此,通过第一个函数,我为链接分配了一个“已选择”的附加类,但在任何给定时间只能“选择”一种形状和一种颜色。那运作良好。
问题是我不能让它只显示红色方块,例如。您也可以切换形状,但是一旦切换单一颜色,形状就会停止工作。
好吧,看看小提琴:http: //jsfiddle.net/j6fXr/
我真的不知道 Firebug,但它似乎表明,当您单击其中一个链接时,“this”仅关注该链接的类 - 所以无论是形状还是颜色 - 而不是所有 .selected 链接。不知道为什么会这样...
我错过了什么?
编辑- 只有在单击颜色之前单击它们,形状动画才有效。因此,一旦小提琴中断,请单击“运行”将其重置。