【发布时间】:2013-01-03 18:02:31
【问题描述】:
我一直在尝试解决这个问题,但我在 javascript/jquery 方面不太擅长,所以我再次请教你们。
如果我选择白色和蓝色,我会得到所有白色和蓝色的动物,那很好。就像我选择马和鸡一样......但问题是,一旦我选择白马或其他东西,我就会得到随机信息......我的问题是我该如何解决这个问题?
Javascript:
$(function(){
$('div.tags').delegate('input[type=checkbox]', 'change', function()
{
var $lis = $('.results > li'),
$checked = $('input:checked');
if ($checked.length)
{
var selector = $checked.map(function ()
{
return '.' + $(this).attr('rel');
}).get().join();
$lis.hide().filter(selector).show().addClass("show");
console.log(selector)
}
else
{
$lis.show().removeClass("show");
}
});
})
HTML:
<div class="tags">
<fieldset class="filter-grp">
<label><input type="checkbox" rel="white" name="year" /> white </label><br>
<label><input type="checkbox" rel="blue" name="year" /> blue </label><br>
<label><input type="checkbox" rel="yellow" name="year" /> yellow </label><br>
</fieldset>
<br>
<fieldset class="filter-grp">
<label><input type="checkbox" rel="horse" name="type" /> horse</label><br>
<label><input type="checkbox" rel="chicken" name="type" /> chicken</label><br>
<label><input type="checkbox" rel="cow" name="type" /> cow</label><br>
</fieldset>
<br>
</div>
<ul class="results">
<li class="white cow">white cow</li>
<li class="white horse">white horse</li>
<li class="white chicken">white chicken</li>
<li class="yellow cow">yellow cow</li>
<li class="blue horse">blue horse</li>
<li class="white chicken">white chicken</li>
</ul>
在这里测试 :) http://jsfiddle.net/d6Zyr/9/
【问题讨论】:
-
看起来它对我来说很好用。 CSS 选择器中的
,表示 OR 而不是 AND,因此单击“white”和“horse”表示“一切都是白色的或一切都是马”。 -
在选择
whitenhorse时,您是否只需要white horse..?? -
好吧,有没有办法做到这一点,然后如果我选择白色和马,我只过滤白马而不是所有白色和所有马的东西??
-
是的 A.V.这正是我的意思,我需要过滤掉白马,而不是所有的白马嘿嘿
标签: javascript jquery list filter selection