javascript - jquery根据类集选择具有多个类的元素

标签 javascript jquery css

因此,只有当这些类都在一组类中找到时,我才尝试选择具有多个类的元素。

例子。我有一个 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/

相关文章:

javascript - jQuery自定义 slider 上一个下一个导航跳转多步

javascript - 无法使用 JQuery 功能切换图像

javascript - jQuery:如何选择包含两个字符串的类

css - 如何创建此按钮样式?

html - 表格填充/边距/任何

html - 着色按钮 css

javascript - 无法设置可见性 :hidden via JavaScript

javascript - 仅当另一个类不存在时才添加一个类

php - 和贾克斯有什么关系?

javascript - Ajax 调用中的 Ajax 调用,第一个总是完成?