選択ボックスから3つの機能を選択した後、jquery/javascriptを使用して複数のクラスでリストをフィルタリングしています。現在、3 つの基準をすべて満たすものを表示し、残りをページの別の div に配置しています。
3 つの条件すべてに一致する項目だけでなく、2 つまたは 1 つの条件にも一致する項目を表示する方法があるかどうか疑問に思っています。条件を満たさない場合は、リストの一番下などに表示されます。
jquery/javascriptを使用してこのようなことを行う方法についての提案を完全にオープンにしています。
<form id="keys" action="results.html">
<select id="key1">
<option id="Android">Android</option>
<option id="Bluetooth">Bluetooth</option>
<option id="Camera">Camera</option>
<option id="Smartactions">Smartactions</option>
<option id="Video">Video</option>
<option id="Cat">Meow</option>
</select>
<select id="key2">
<option id="Android">Android</option>
<option id="Bluetooth">Bluetooth</option>
<option id="Camera">Camera</option>
<option id="Smartactions">Smartactions</option>
<option id="Video">Video</option>
</select>
<select id="key3">
<option id="Android">Android</option>
<option id="Bluetooth">Bluetooth</option>
<option id="Camera">Camera</option>
<option id="Smartactions">Smartactions</option>
<option id="Video">Video</option>
</select>
</form>
<button id="submit" onclick="showList()">Submit</button>
<div id="results">
<ul>
<li class="Bluetooth Camera" style="display:none">DEFY PRO</li>
<li class="Bluetooth Camera Smartactions" style="display:none">Motorola RAZR V</li>
<li class="Bluetooth Camera Smartactions" style="display:none">ATRIX HD LTE</li>
<li class="Android Bluetooth Camera Smartactions Video" style="display:none">Motorola RAZR</li>
<li class="Bluetooth Camera Video" style="display:none">MOTO LUXE</li>
</ul>
</div>
<div id="rest_results">
</div>
そして私のスクリプト
function showList() {
var key1 = keys.key1.value;
var key2 = keys.key2.value;
var key3 = keys.key3.value;
var filter = $("." + key1 + "." + key2 + "." + key3 + "");
filter.show();
if (filter.length == 0) {
alert("There is nothing that matches your criteria");
}
var rest = $('li').not(filter);
rest.show().appendTo("#rest_results");
}
そしてフィドル