📜  如何删除所有兄弟姐妹中的类javascript(1)

📅  最后修改于: 2023-12-03 14:52:09.283000             🧑  作者: Mango

如何删除所有兄弟姐妹中的类javascript

在应用的项目中,可能需要改变DOM元素的类,例如添加类、删除类、替换类等。当我们想删除所有兄弟姐妹中的特定类时,可以使用以下方法。

方法一:使用classList属性

classList是一个只读属性,返回元素的类名集合,可以使用其方法来操作类名。我们可以使用以下代码来删除所有兄弟姐妹中的特定类:

const siblings = Array.from(element.parentNode.children); //获取兄弟节点
siblings.forEach(sibling => {
  if (sibling.classList.contains('className')) {
    sibling.classList.remove('className');
  }
});

代码解释:

  1. 使用parentNode获取当前元素的父节点;
  2. 使用children获取父节点下的所有子节点;
  3. 使用Array.from()将NodeList转换为数组;
  4. 使用forEach遍历每个兄弟节点;
  5. 使用classList.contains()检查兄弟节点是否包含指定类;
  6. 如果包含则使用classList.remove()删除类。
方法二:使用正则表达式

如果要一次性删除多个类,可以使用正则表达式。以下代码可以删除所有兄弟姐妹中的以"foo-"为前缀的类:

const siblings = Array.from(element.parentNode.children); //获取兄弟节点
const reg = /^foo-/; //匹配以"foo-"为前缀的类
siblings.forEach(sibling => {
  const classes = sibling.className.split(' '); //将类名分割成数组
  const filteredClasses = classes.filter(className => !reg.test(className)); //过滤掉需要删除的类
  sibling.className = filteredClasses.join(' '); //将过滤后的类名重新赋值给元素
});

代码解释:

  1. 使用parentNode获取当前元素的父节点;
  2. 使用children获取父节点下的所有子节点;
  3. 使用Array.from()将NodeList转换为数组;
  4. 使用正则表达式匹配需要删除的类;
  5. 使用className.split(' ')将类名分割成数组;
  6. 使用filter()方法过滤需要删除的类;
  7. 使用join()方法将过滤后的类名重新赋值给元素的className属性。

以上就是删除所有兄弟姐妹中的特定类的两个方法,根据实际需求选择适合的方法即可。