如何使用jquery从DOM中删除随机生成的属性?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用jquery从DOM中删除随机生成的属性?相关的知识,希望对你有一定的参考价值。

假设我知道特定元素的类名。但是,我不知道具体的属性名称,因为它是随机的,并且每个页面加载都会发生变化。

例如:

<div class="myclass" lskdjf=""></div>

在这种情况下,我想删除属性lskdjf

如果我知道属性,我可以使用这样的东西:

$('.myclass').removeAttr('lskdjf');

但是,由于我不知道属性名称,我需要另一种方法来删除它,因为我无法列出无限数量的可能字符串。

关于此属性的另一件事总是一致的:

  • 该属性始终为空(我可以在不知道属性名称的情况下删除所有空属性吗?)

如何使用jQuery从DOM中删除这些随机属性?


注意:另一种可能是剥离所有属性,然后尝试立即添加回我想要保留的属性(如类)。我不知道这是否有效,但如果可能的话,值得一试。

答案

我会说你可以这样做:

const element = document.getElementsByClassName('myclass')[0];

const attrs = element.attributes;

let emptyAttrs = [];

for(let i = 0; i < attrs.length; i++) {
  if (attrs[i].value === "") {
    emptyAttrs.push(attrs[i].name)
  }
}

emptyAttrs.forEach((attributeName) => element.removeAttribute(attributeName));

这应该获取所有属性,并将带有空字符串的值作为值存储到名为emptyAttrs的数组中,然后循环遍历每个属性并将其从原始元素中删除。

注意:这可能需要调整,因为我直接将其写入stackoverflow并且没有检查拼写,边缘情况等。

另一答案

没有像这样的jQuery这样的大型库。您需要做的就是提取元素的attributes属性,然后访问attributes[attributes.length - 1].name并删除该属性。这是一个元素的示例,它获取一个随机命名的属性,然后将其删除:

const div = document.body.appendChild(document.createElement('div'));
div.className = 'myclass';
div.setAttribute(
  'rand' + Math.random().toString(36).substring(7),
  'randomattributevalue'
);
console.log(div.outerhtml);
const { attributes } = div;
const attributeName = attributes[attributes.length - 1].name;
div.removeAttribute(attributeName);
console.log(div.outerHTML);

以上是关于如何使用jquery从DOM中删除随机生成的属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Simple HTML Dom Parser 从 HTML 中删除类和 ID 属性

从 jQuery 选择中删除没有 id 的元素?

是否可以使用 jquery 从 dom 中删除 html 注释

JQuery快速入门-操作元素的属性和样式

创建和删除DOM元素

如何在 dom 节点移除、属性修改时添加监听器?