有一个相关的问题得到了很好的回应,但是方法和我的实际实施需要不同的策略。
请查看我作为作业完成的演示示例:http: //jsfiddle.net/k8fNb/
我有两个家庭作业:
- 根据数据过滤器使选择选项隐藏和可见:TODO
- 根据单选值选择选择选项:DONE
当您单击单选时,选择值应该与单选值(#2)相同,并且完成,但这也应该根据单选的数据过滤器过滤选择选项的可见性。数据过滤器["a","b","c"]
应#filters
使具有值 a、b、c 的选项可见,并隐藏其余选项。我的问题是如何处理#1。
HTML:
<div id="filters">
<input type="radio" name="filter" value="a" data-filter="["a","b","c"]"/><label>a </label>
<input type="radio" name="filter" value="b" data-filter="["a","b","c"]"/><label>b </label>
<input type="radio" name="filter" value="c" data-filter="["a","b","c"]"/><label>c </label>
<input type="radio" name="filter" value="1" data-filter="["1","2","3"]"/><label>1 </label>
<input type="radio" name="filter" value="2" data-filter="["1","2","3"]"/><label>2 </label>
<input type="radio" name="filter" value="3" data-filter="["1","2","3"]"/><label>3 </label>
</div>
<select id="options">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
jQuery:
$(document).ready(function(){
$('#filters input').each(function () {
var v = $(this).val();
$(this).click(function () {
$('#options option').filter(function(){
// 1. Make select options hidden or visible based on data-filter.
// ? TODO ....
// 2. FIXED. Change select value to use radio value
return $(this).val() == v;
}).prop("selected", true);
});
});
});
任何帮助深表感谢。