基于白名单删除元素的所有属性

meo*_*meo 9 jquery

我需要删除在某些元素上设置的所有属性(使用vanilla JS或jQuery),除了一些手动选择的元素.让我们说我有一个图像:

<img hspace="4" border="1" vspace="4" src="someimage.jpg" alt="somealt" />
Run Code Online (Sandbox Code Playgroud)

我想要这个结果:

<img src="someimage.jpg" alt="somealt" />
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一方法就是.removeAttr()每一个属性.但问题是有时元素具有W3C规范中不存在的属性.我想删除所有其他未列入白名单的属性.

你会怎么做?

use*_*716 13

这是一个迭代attributes列表的解决方案.

我实际上只将其值设置为""(空字符串),因为由于某种原因,removeAttribute()当它到达border属性时失败.调查...

试试看:

var whitelist = ["src","alt"];

$('img').each(function() {
    var attributes = this.attributes;
    var i = attributes.length;
    while( i-- ) {
        var attr = attributes[i];
        if( $.inArray(attr.name,whitelist) == -1 )
            this.removeAttributeNode(attr);
    }
});?
Run Code Online (Sandbox Code Playgroud)