我需要删除在某些元素上设置的所有属性(使用vanilla JS或jQuery),除了几个手动选择的元素之外.说我有一个图像:
<img hspace="4" border="1" vspace="4" src="someimage.jpg" alt="somealt" />
我想要这样做:
<img src="someimage.jpg" alt="somealt" />
我可以想到的唯一方法是.removeAttr()每个属性.但是问题在于,某些时候,元素具有W3C规范中不存在的属性.我想删除所有其他未列入白名单的属性.
你会怎么做
解决方法
这是一个迭代属性列表的解决方案.
我实际上只是将其值设置为“”(空字符串),因为某些原因,当它到达border属性时,removeAttribute()将失败.调查…
试一试:
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); } });