列出所有以特定前缀开头的唯一类名

3
好的,让我们以标记语言为例。
<div class="_round_5">Some text</div>
<div class="_brTop_5">Another Text</div>

我的想法是收集页面中所有以_开头的唯一类名,并将它们发布到另一个页面,该页面将返回一个包含基于这些类名生成的CSS样式的文件。
现在,如何收集所有以"_"或其他前缀开头的独特类名呢?列表可以是数组或json格式。但我更喜欢json。

<div class="_round_51234 _bla4536456">应该如何处理?是否应该考虑它? - thirtydot
@thirtydot,是的,任何以“_”开头的内容都必须被考虑在内。 - Starx
2个回答

3
尝试: http://jsfiddle.net/54kzu/3/
正如您在评论中所要求的那样,它可以正确地处理多个类。
var uniqueClasses = [];

$('[class]').each(function() {
    var thisClasses = $(this).attr('class').split(/\s+/);
    $.each(thisClasses, function(i, thisClass) {
        if (thisClass.substring(0,1) == '_' && $.inArray(thisClass, uniqueClasses) == -1) {
            uniqueClasses.push(thisClass);
        }
    });
});

console.log(uniqueClasses);

哇,太棒了(+1)。但是,有一个线程。这段代码会对性能产生什么影响? - Starx
这并不是很棒(由于嵌套的.each,需要检查每个元素[但我看不到解决方法]),但在普通大小的页面上你永远不会注意到它。对于只运行一次(我假设是这种情况),这应该没关系。 - thirtydot
此外,我发现您提供的片段存在一个限制。假设我的标记是这个<div class="4_round _5_bla">Some text</div>,由于类属性不以“_”开头,它会忽略 _5_bla,而实际应该计算在内。如何解决这个问题? - Starx
不错,试试这个更新版本:http://jsfiddle.net/54kzu/3/ - 现在我们正在寻找任何带有 class 属性的元素。对于每个类别,查看它是否以 _ 开头。如果是,并且它还没有在列表中,就将其添加到列表中。 - thirtydot

1

选择并不是我的解决方案。我知道这一点...但我想尽可能快地获取所有名称,而且是唯一的。 - Starx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接