考虑我里面有这个无序列表和隐藏的列表项。 { on jsFiddle }

<ul>
<li class="brand pro size color">one</li>
<li class="brand pro color">two</li>
<li class="brand pro size color">three</li>
<li class="pro size color">four</li>
<li class="brand pro size color">five</li>
<li class="pro color">six</li>
<li class="brand pro size color">seven</li>
<li class="brand pro size color">eight</li>
<li class="brand size color">nine</li>
<li class="brand pro color">ten</li>
</ul>

我有四个数组:

    var myBrand = $("ul li.brand");
var myPro = $("ul li.pro");
var mySize = $("ul li.size");
var myColor = $("ul li.color");

我希望在名为mySelected的新数组中具有“相同对象”。

我已经为两个数组完成了这样的工作:

var mySelected = myBrand.filter(function() {
return $.inArray(this, myPro) > -1;
});
mySelected.show();

我想知道如何对“四个”或更多数组进行处理?

===============>>#1 票数:3 已采纳

您将不得不遍历它们。 随着EcmaScript的5是every你可以:

var mySelected = myBrand.filter(function() {
    var li = this;
    return [myPro, mySize, myColor].every( function(array) {
        return $.inArray(li, array) > -1;
    });
});

编辑:根据jQuery的api ,filter方法也将jQuery集作为参数。 所以下面的人也应该工作:

var mySelected = myBrand;
var setsToBeMatched = [myPro, mySize, myColor];
for (var i=0; i<setsToBeMatched.length; i++)
    mySelected = mySelected.filter(setsToBeMatched[i]);

===============>>#2 票数:1

如果要选择具有所有四个类的所有<li>元素,则可以使用选择器并立即选择它们:

var mySelected = $('ul li.brand.pro.size.color');

这是一个演示: http : //jsfiddle.net/btk7r/1/

更新

如果您有一系列的类,则可以使其更加动态:

var class_arr  = ['brand', 'pro', 'size', 'color', 'length', 'width'],
    mySelected = $('ul li.' + class_arr.join('.'));

  ask by Imran translate from so

未解决问题?本站智能推荐: