拆分类并将它们与另一个 DIV 匹配。 jQuery

Posted

技术标签:

【中文标题】拆分类并将它们与另一个 DIV 匹配。 jQuery【英文标题】:Splitting classes & matching them against another DIV. JQuery 【发布时间】:2012-01-28 16:09:03 【问题描述】:

我有一个名为 box 的 div,其中包含三个类。我想创建一个名为 relatedBoxes 的变量,用于存储共享 box 具有的任何相同类的复选框。

我正在拆分这些类并将它们存储在名为 splitClass 的变量中。

我现在只需要查看:checkbox 是否包含保存在splitClass 中的任何类的方法。我尝试过创建变量relatedBoxes,但这并不完全奏效。

标记:

<div id="box" class="marker blue large">

javascript

var c = $('#box').attr('class');
var splitClass = c.split(' ');

var relatedBoxes = $(':checkbox').hasClass(splitClass);

非常感谢大家

【问题讨论】:

【参考方案1】:

hasClass 需要一个类名,您现在正在向它传递一个数组。如果您尝试使用markerbluelarge 查找所有 元素,类似:

var relatedBoxes = $( ':checkbox' ).filter( '.' + splitClass.join( ',.' ) );

【讨论】:

+1 我喜欢这样。也许和filter一起:$('input[type="checkbox"]').filter('.' + splitClass.join( ',.' )) @FelixKling -- 就是这么做的 :) 这看起来不错,给我一点时间来测试一下。希望它将存储与任何这些类匹配的所有复选框!感谢您的回答! @CecilTheodore——就是这样。它最终解析为 $( ':checkbox' ).filter( '.marker,.blue,.large' ) -- , 是 jQuery 选择器中的“或”运算符 这很酷。真的简化了。 +1 狼!也解决了。【参考方案2】:

您可以使用.filter() [docs] 并遍历元素的类:

var splitClass = $('#box').attr('class').split(' ');

var relatedBoxes = $('input[type="checkbox"]').filter(function() 
    for(var i = 0, len = splitClass.length; i < len; i++) 
        if($(this).hasClass(splitClass[i])) return true;
    
    return false;
);

【讨论】:

以上是关于拆分类并将它们与另一个 DIV 匹配。 jQuery的主要内容,如果未能解决你的问题,请参考以下文章

删除一张表中与另一张表中相同的记录

在一个数组中找到最高分并将该索引与另一个数组的索引匹配

是否可以处理与模式匹配的文本行并将其移动到与另一个模式匹配的另一个位置(在同一文件中)? [关闭]

从一个表中选择所有元素,并检查它们是不是与另一个表匹配

如何单击以克隆与这些类匹配的所有 id

如何将一个表与另一个表连接,然后计算非空列并将它们按另外两个字段分组?