javascript - 获取 DOM 中与给定正则表达式匹配的一组类
问题描述
我正在动态生成元素:
<a class="gallery1" href="base64String">
<img src="base64StringThumbnail">
</a>
在数值后缀gallery
变化的情况下,我无法提前预测数值,因此该类的正则表达式为"gallery\\d+"
. 我想只获得所有没有与该正则表达式匹配的重复项的类
所以我可以写这样的东西:
$(document).ready(function () {
for(const clazz in matchedClasses){
$('.' + clazz).createGallery();
}
});
例如,如果我有带有类的元素:gallery1, gallery2, gallery1, gallery3, gallery2
在 DOM 中,我会得到:
[gallery1, gallery2, gallery3]
以任何顺序。在 C# 和 Java 中这对我来说很容易,但我不知道如何在 JS 中实现。
解决方案
您可以定位所有元素,querySelectorAll()
并且属性以 selector 开头。然后遍历它们以从带有.map()
. 最后使用Spread 语法和Set
.
试试下面的方法:
var galleryList = document.querySelectorAll('[class^="gallery"]');
var res = [...new Set(Array.from(galleryList).map(g => g.getAttribute('class')))];
console.log(res);
<a class="gallery1" href="base64String">
<img src="base64StringThumbnail">
</a>
<a class="gallery2" href="base64String">
<img src="base64StringThumbnail">
</a>
<a class="gallery3" href="base64String">
<img src="base64StringThumbnail">
</a>
<a class="gallery1" href="base64String">
<img src="base64StringThumbnail">
</a>
<a class="gallery2" href="base64String">
<img src="base64StringThumbnail">
</a>
推荐阅读
- installation - Inno Setup - 一次安装多个软件版本
- jquery - 最后加载 jQuery
- javascript - react-native 异步函数的钩子问题
- c# - 如何在 DataGridView 中从应用程序更改和添加新列
- c++ - (已解决)蓝牙 LE:将特征设置为字节数组发送错误的值
- typegraphql - 在 type-graphql 中自动清理 @Args
- c++ - 程序没有将所有不同办公室的份额加起来在一个 TotalAmount 变量中
- c++ - cmake在Windows上与cpprestsdk链接
- flutter - How do I deploy a Keras model on mobile devices using DART and Flutter SDK?
- flutter - Flutter 从课外管理动画控制器