jQuery两个选择菜单按类显示/隐藏列表

时间:2012-12-18 03:22:56

标签: jquery select show-hide siblings

我最近的问题:jQuery select menu show siblings with same ID hide other siblings

允许我使用选择菜单选项值显示/隐藏列表项:http://jsfiddle.net/Z3Qgz/

如果我添加第二个选择菜单,如何将两个选择菜单链接在一起,以便显示的列表项代表两个菜单中选择的值?

$(function() {
    var $li = $('.levelThree').find('li')
    $("#orientation").change(function() {
        if (this.value == 'all') {
            $li.show();
        }
        else {
            $li.hide().filter("." + this.value).show();
        }
    }).change();
});
$(function() {
    var $li = $('.levelThree').find('li')
    $("#colours").change(function() {
        if (this.value == 'all') {
            $li.show();
        }
        else {
            $li.hide().filter("." + this.value).show();
        }
    }).change();
});

http://jsfiddle.net/dRqRV/2/

E.g。选择“Landscape”和“CMYK”将仅显示具有“Landscape CMYK”类的列表项。

1 个答案:

答案 0 :(得分:2)

您可以向元素添加2个其他类并使用类选择器,这样就不需要使用if / else语句。

<select id="orientation">
    <option value="all-orientations">All</option>
    ...
</select>
<select id="colours">
    <option value="all-colours">All</option>
    <option value="CMYK">CMYK</option>
    ...
</select>

<!-- the DIVs -->
<ul class="levelThree">
    <li class="Landscape CMYK all-colours all-orientations"><p>Landscape CMYK</p></li>
    <li class="Landscape RGB all-colours all-orientations"><p>Landscape RGB</p></li>
    <li class="Landscape PMS all-colours all-orientations"><p>Landscape PMS</p></li>
    ...
</ul>

$(function() {
    var $li = $('.levelThree').find('li')
    $("#orientation, #colours").change(function() {
        var a = $("#orientation").val();
        var b = $("#colours").val();
        $li.hide().filter("." + a + "." + b).show();
    }).change();
});

http://jsfiddle.net/3jRQq/