因此,只有当这些类都在一组类中找到时,我才尝试选择具有多个类的元素。
例子。我有一个 id="foo"和 class="red blue"的元素
然后我有一些给定的颜色集。我想从中选择集合中的所有元素。
假设我有设置 {red} 应该找不到任何东西。 {red blue} 然后应该找到'foo'。然后如果我有 {red blue green} 那么仍然应该找到'foo'。
我已经用多个选择器试过了,但是一旦集合大于 {red blue}
$.('.red') will return foo (which is not what I want.)
$.('.red.blue') will return foo (good!)
$.('.red.blue.green') will return nothing (bad.)
我也不确定这里的“或”运算符是否是我想要的。 $.('.red,.blue') 然后将返回任何带有红色或蓝色的元素,这不是我想要的。我已经弄清楚了那个函数。
是否有某种“全部”功能?
我正在考虑只对元素集迭代每个可能的选择查询,但是当该集超过 4 个元素时,这很快就会变成很多查询。
最佳答案
注意:这是一个概念性解决方案......您必须根据您的具体要求对其进行调整
function x($targets, array){
var filtered = $targets.filter(function(){
var classNames = this.className.split(/\s+/), valid = true;
$.each(classNames, function(idx, value){
if($.inArray(value, array) == -1){
valid = false;
return false;
}
});
return valid;
});
//do something
return filtered;
}
然后
//this is the set of elements against which the tests have to be done
var $targets = $('#ct').children();
x($targets, ['red']);
x($targets, ['red', 'green']);
演示:Fiddle
关于javascript - jquery根据类集选择具有多个类的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18757041/