我有一个基本形式,按动物类型过滤,('哺乳动物'显示'狗''松鼠'等)。但是,我还需要使用多种选择,同时选择“哺乳动物”和“哺乳动物”。和#39; Bird'会显示合并的结果(' Dog',' Squirrel' Hawk')而不是只替换另一个。
以下是我正在使用的代码。任何帮助表示赞赏!感谢。
$('select#list').change(function() {
var target = $(this).data('target');
$(target).children().addClass('hide');
var show = $("option:selected", this).data('show');
$(show).removeClass('hide');
});

.hide {
display: none;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="list" multiple="multiple" data-target=".my-info-1">
<option value="32" data-show=".Mam">Mammals</option>
<option value="3" data-show=".Bird">Birds</option>
<option value="4">Reptiles</option>
</select>
<select id="butts" class="my-info-1" multiple="multiple">
<option class="Mam hide">Squirrel</option>
<option class="Mam hide">Dog</option>
<option class="Bird hide">Hawk</option>
<option class="hss hide">Snake</option>
</select>
&#13;
答案 0 :(得分:0)
将所有选定选项的data-show
转换为以逗号分隔的列表:
$('select#list').change(function() {
var target = $(this).data('target'),
show = $("option:selected", this).map(function () {
return $(this).data('show');
}).get().join(",");
$("#debug").text(show);
$(target).children().addClass('hide').filter(show).removeClass('hide');
});
select {
width: 100px;
height: 100px;
}
.hide {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="list" multiple="multiple" data-target=".my-info-1">
<option value="32" data-show=".Mam">Mammals</option>
<option value="3" data-show=".Bird">Birds</option>
<option value="4" data-show=".hss">Reptiles</option>
</select>
<select id="butts" class="my-info-1" multiple="multiple">
<option class="Mam hide">Squirrel</option>
<option class="Mam hide">Dog</option>
<option class="Bird hide">Hawk</option>
<option class="hss hide">Snake</option>
</select>
<p id="debug"></p>