javascript - 选择具有数据名称的所有标签 - 获取值 - 设置类

标签 javascript jquery html custom-data-attribute

我有一些 HTML,其中动态打印了一堆元素,其中一些元素包含特定的 data 属性。由于我的模板语言无法有效地利用正则表达式,因此我需要使用 JavaSript(或 JQuery)来选择数据值、构建字符串,然后将该字符串作为类添加到该原始元素。

HTML 示例:

<div class="item" data-ses-cat="This Cool Thing (Yes)"></div>

JavaScript 之后所需的 HTML 示例:

<div class="item this-cool-thing-yes" data-ses-cat="This Cool Thing (Yes)"></div>

我只需向包含 data-ses-cat所有标签添加一个类,然后获取该数据属性的值,运行正则表达式,然后添加新的字符串作为一个类。

我觉得应该很简单,但是我已经有一段时间没有接触太多JQuery了。

感谢您的帮助!

最佳答案

删除所有非字母数字或空格的字符,然后将其小写,然后按空格分割,并按破折号连接。

$('.item[data-ses-cat]').each(function(){
  var newClass = $(this).data('ses-cat')
      .replace( /[^a-zA-Z0-9 ]/g, '' )
      .toLowerCase()
      .split( ' ' )
      .join( '-' );
  
  this.classList.add( newClass );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item" data-ses-cat="This Cool Thing (Yes)">Test</div>

根据您的评论,这是一个使用箭头函数的版本。

$('.item[data-ses-cat]').each((index, element)=>{
  var newClass = $(element).data('ses-cat')
      .replace( /[^a-zA-Z0-9 ]/g, '' )
      .toLowerCase()
      .split( ' ' )
      .join( '-' );
  
  element.classList.add( newClass );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item" data-ses-cat="This Cool Thing (Yes)">Test</div>

关于javascript - 选择具有数据名称的所有标签 - 获取值 - 设置类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55736353/

相关文章:

javascript - JQuery 中滚动到 div 时添加类,滚动到另一个 div 时删除类

javascript - 从 div 中大量删除内容和属性

jquery - 使用 animate.css 的动画,可见性为 :hidden

html - outlook 中的行距

javascript - 使用按位或 0 对数字取底

javascript - 如何在localStorage中维护浏览器Tab对象?

javascript - 如果它是动态创建的,则知道选中的复选框 - Django

javascript - jsrender 使用已选择的选项填充多个选择框

javascript - 使用 "background-image"时,DIV "background-size : 100% 100%"未延伸到整个 DIV

html - 使图像下方的div中的文本具有图像的宽度