0

在我的页面中,我有以下内容。我需要使用javascript对其进行排序。

<li class="cat2 lang1">Hello</li>
<li class="cat2 lang1">Hello</li>
<li class="cat1 lang2">Hello</li>
<li class="cat3 lang3">Hello</li>

我尝试的是:

$('#movieFeatureFilter span#selGenre .subMenus li').click(function()
{
    if(this.id != '')
    {
        $('.movie_lists ul li').hide();
        $('.movie_lists ul li.cat'+this.id).show();
    }
    else $('.movie_lists ul li').show();
});

这很完美。但我需要使用 lang 和 cat 的组合对列表进行排序。

即,如果我选择cat1作为类别并选择lang2作为语言,那么它可能会显示第三个li

我想你明白我的意思。对不起,不好的解释。请帮帮我

4

2 回答 2

2
var $items = $('ul li'), $cat = $('#cat'), $lang = $('#lang');
$('#cat, #lang').change(function(){
    var cat = $cat.val(), lang = $lang.val(), $filtered = $items;
    if(cat){
        $filtered = $filtered.filter('.' + cat);
    }
    if(lang){
        $filtered = $filtered.filter('.' + lang);
    }
    $items.not($filtered).hide();
    $filtered.show()
})

演示:小提琴

于 2013-09-16T02:29:38.627 回答
0

似乎不是排序,而是要根据catlang的选择来显示/隐藏项目。以下功能将满足您的目的:

$("#movieFeatureFilter span#selGenre .subMenus li").click(function () {

   /*GET cat AND lang FROM DROPDOWNS*/

    var cat = $("#c").val(),
        lng = $("#l").val();

    $("#<ID OF UL> li").filter(function () {
        $this = $(this);
        if ($this.hasClass(cat)) {
            if (!$this.hasClass(lng)) {
                $this.hide();
            } else {
                $this.show();
            }
        } else {
            $this.hide();
        }
    });
});

在这里检查小提琴

于 2013-09-16T02:20:01.523 回答