通过正则表达式和 classList 检查元素是否包含类

2023-11-22

我有一个简单的元素列表,如下所示:

<ul class="items-list">
  <li class="item item-1"></li>
  <li class="item item-2"></li>
  <li class="item item-3"></li>
  <li class="item item-4"></li>
</ul>

我通过以下方式选择列表

items = document.getElementsByClassName('items-list')[0]

最后里面一个for..in循环我想提取类名'item-*'。 因为我想在没有 jQuery 或其他库的情况下实现它,所以我想知道如何以最优雅的方式做到这一点,比如

if (item.classList.contains('item-.*'))
  do_something()

您可以检查是否some(ES5) 类与您的正则表达式匹配:

if(item.className.split(' ').some(function(c){ return /item-.*/.test(c); }))
  do_something()
/* or */
if([].some.call(item.classList, function(c){ return /item-.*/.test(c); }))
  do_something()

或者,在 ES6 中,使用箭头函数,你可以将其简化为

if(item.className.split(' ').some(c => /item-.*/.test(c)))
  do_something()
/* or */
if([].some.call(item.classList, c => /item-.*/.test(c)))
  do_something()

但是当然,如​​果您想要最大性能,请使用循环:

for (var i=0, l=item.classList.length; i<l; ++i) {
    if(/item-.*/.test(item.classList[i])) {
        do_something();
        break;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过正则表达式和 classList 检查元素是否包含类 的相关文章

随机推荐