【发布时间】:2012-08-20 03:02:07
【问题描述】:
我需要能够在客户端使用多个选择框来归档一个长列表。
我已经使用一个选择框成功地做到了这一点。
<select id="company">
<option selected="true" >ALL</option>
<option>GM</option>
<option>Honda</option>
<option>Ford</option>
</select>
<select id="company2">
<option selected="true" >ALL</option>
<option>Buick [GM]</option>
<option>Honda</option>
<option>Ford</option>
</select>
<ul id="names" multiple="multiple" size="8">
<li>Chevy [GM]</li>
<li>Buick [GM]</li>
<li>Civic [Honda]</li>
<li>Accord [Honda]</li>
<li>Focus [Ford]</li>
</ul>
还有剧本
var names = $('#names li').clone();
$('#company').change(function() {
var val = $(this).val();
$('#names').empty();
names.filter(function(idx, el) {
return val === 'ALL' || $(el).text().indexOf( val ) >= 0;
}).appendTo('#names');
$('#company2').change(function() {
var val = $(this).val();
$('#names').empty();
names.filter(function(idx, el) {
return val === 'ALL' || $(el).text().indexOf(val) >= 0;
}).appendTo('#names');
});
});
这几乎可行,我可以在第一个选择框中选择 GM,列表会将<li> 更改为
- 雪佛兰 [GM]
- 别克 [GM]
如果我随后使用第二个选择框选择 Buick [GM],<li> 将变为仅显示
- 别克 [GM]
这是我想要的。但是我发现如果第二个框选择 Honda,它将显示
- 思域 [本田]
- 雅阁[本田]
我的问题是如何将两者链接在一起,以便同时使用通用和本田?
没有任何过滤器的列表是:
- 雪佛兰 [GM]
- 别克 [GM]
- 别克 [GM]
- 别克 [GM]
- 思域 [本田]
- 雅阁[本田]
- 专注 [福特]
当我们从它显示的第一个过滤器中选择 GM 时
- 雪佛兰 [GM]
- 别克 [GM]
- 别克 [GM]
- 别克 [GM]
所以如果我们从第二个过滤器中选择“别克 [GM]”,列表现在会显示
- 别克 [GM]
- 别克 [GM]
- 别克 [GM]
这是正确的,但第二个过滤器设置为福特列表将显示
- 专注 [福特]
所以过滤器没有协同工作
【问题讨论】:
-
我真的不明白你在做什么。能详细解释一下吗?