使用javascript或jquery对li元素进行排序

时间:2013-09-16 01:59:26

标签: javascript jquery

在我的页面中,我有以下内容。我需要使用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

我认为你是我的意思。对不起的解释感到抱歉。帮帮我吧

2 个答案:

答案 0 :(得分: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()
})

演示:Fiddle

答案 1 :(得分:0)

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

$("#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();
        }
    });
});

检查小提琴here.