首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将任何对象的类名中的下划线替换为短划线

将任何对象的类名中的下划线替换为短划线
EN

Stack Overflow用户
提问于 2019-03-15 06:59:20
回答 2查看 386关注 0票数 0

我想要一个javascript调用(jQuery OK)来改变类似这样的东西

代码语言:javascript
复制
<div class="demo pass_no def_yes">.. </div>
...
<ul class="me lien_u lis__y"> ... </ul>

代码语言:javascript
复制
<div class="demo pass-no def-yes">.. </div>
...
<ul class="me lien-u lis--y"> ... </ul>

将下划线(_)替换为短划线(-)

对象可以是任何dom对象。带下划线的类是从另一个系统生成的,不能从我这一端修改,而CSS框架(同样不能修改)在类名中使用破折号。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-15 07:05:51

可以使用.querySelectorAll选择具有带下划线的类的所有元素,并将这些类替换为连字符。

代码语言:javascript
复制
document.querySelectorAll("[class*='_']")
  .forEach(el => el.className = el.className.replace(/_/g, "-"))
代码语言:javascript
复制
.foo-bar-baz {
  color: green;
}

.foo_bar_baz {
  color: red;
}
代码语言:javascript
复制
<div class=foo_bar_baz>GREEN</div>

票数 3
EN

Stack Overflow用户

发布于 2019-03-15 07:05:27

使用document.querySelectorAll('*')遍历所有元素,然后使用String.prototype.replace(/_/g, '-')更新每个DOM节点的className

代码语言:javascript
复制
document.querySelectorAll('*').forEach(element => {
  element.className = element.className.replace(/_/g, '-');
  if (element.className.trim()) {
    console.log(element.tagName, '->', element.className);
  }
});
代码语言:javascript
复制
<div class="demo pass_no def_yes">
  <div class="demo pass_no def_yes"></div>
  <ul class="me lien_u lis__y"></ul>
</div>
<ul class="me lien_u lis__y"></ul>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55173243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档