找到bem类并替换为另一个

时间:2017-12-04 11:14:08

标签: jquery

我搜索变量jQuery如何在<div>中找到更多类的BEM修改,例如。

<div class="xc-icon xs-icon--account-circle xs-font--big">

我需要检测到修饰符xs-icon--account-circle,但accoutn-cicle是可变的,所以我只需要检测xs-icon--something-sometimes-with-dash

有人可以帮助我通过正则表达式检测只有变量BEM修饰吗?

谢谢。

 

2 个答案:

答案 0 :(得分:1)

你可以传递jQuery一个CSS“包含”选择器,例如

$("[class*='xs-icon--']")

这应该返回所有具有BEM修饰符的xs-icon元素的集合。

答案 1 :(得分:1)

您可以尝试以下操作,它将查找包含类的特定部分的元素并删除该类。

$("[class*=xs-icon--]").removeClass(function(index, className) {
  return (className.match(/(^|\s)xs-icon--\S+/g) || []).join(' ');
});

$("[class*=xs-icon--]") =如果任何元素包含xs-icon--

的类

如果您运行代码class="xc-icon xs-icon--account-circle xs-font--big",则会返回class="xc-icon xs-font--big"

$("[class*=xs-icon--]").removeClass(function(index, className) {
  return (className.match(/(^|\s)xs-icon--\S+/g) || []).join(' ');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="xc-icon xs-icon--account-circle xs-font--big">test</div>