Javascript使用单选按钮过滤html元素的可见性

Javascript filter visibility of html elements using radio buttons

本文关键字:元素 可见性 html 过滤 单选按钮 Javascript      更新时间:2023-09-26

我看到过许多使用复选框和单选按钮过滤以显示不同类的例子。问题是两个选定的类与任何一个类的所有元素都会显示,但我希望它只显示两个类的元素。下面是一些示例代码:http://jsfiddle.net/DH3m3/

js:

function filterItems() {
    var colors = $(":radio:checked").map( function(){ return this.value; }).get();
    var goodClasses = colors.join(",");
    $(".item").hide().filter(goodClasses).show();
}
filterItems();
$(":radio").change(filterItems);

和html:

<label for="one">one</label><input id="one" type="radio" name="number" value=".one" />
<label for="two">two</label><input id="two" type="radio" name="number" value=".two" />
<label for="none">none</label><input id="none" type="radio" name="number" value=".none" />
<hr/>
<label for="red">red</label><input id="red" type="radio" name="color" value=".red" />
<label for="blue">blue</label><input id="blue" type="radio" name="color" value=".blue" />
<label for="green">green</label><input id="green" type="radio" name="color" value=".green" />
<label for="non">none</label><input id="non" type="radio" name="color" value=".none" />
<hr/>
<div class="item one yellow">yellow</div>
<div class="item two red">red</div>
<div class="item one blue">blue</div>
<div class="item two green">green</div>
<div class="item one red green">red green</div>
<div class="item two red blue">red blue</div>
<div class="item one blue green">blue green</div>
<div class="item two red blue green">red blue green</div>

在这个例子中,我想如果"one"answers"red"被选中,那么显示的元素应该是"red green",或者如果"two"answers"blue" - "red blue"answers"red blue green"。有什么想法吗?

需要多个类选择器。例如,对于onered类,它看起来像.one.red。它同时针对具有这两个类的元素。所以你应该改变你的类选择器:

var goodClasses = colors.join("");

演示:http://jsfiddle.net/DH3m3/1/