在我的页面中,我有以下内容。我需要使用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
我认为你是我的意思。对不起的解释感到抱歉。帮帮我吧答案 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.