Javascript 如何按属性名称删除所有属性从

Javascript 如何按属性名称删除所有属性从,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我想删除类为“只读状态”的字段中属性名称以“data val”开头的所有属性 jQuery("[data-val^='tr']" ) 这将给出以“tr”开头的属性“data val”值 但是我需要删除所有以开头的属性 匹配元素中的“数据值” 我该怎么做呢?您可以使用vanilla javascript的属性来实现这一点: $('.read-only-state').each(function() { // get the native attributes object va

我想删除类为“只读状态”的字段中属性名称以“data val”开头的所有属性

 jQuery("[data-val^='tr']" )  
这将给出以“tr”开头的属性“data val”值

但是我需要删除所有以开头的属性 匹配元素中的“数据值”


我该怎么做呢?

您可以使用vanilla javascript的属性来实现这一点:

$('.read-only-state').each(function() {
   // get the native attributes object
   var attrs = this.attributes;
   var toRemove = [];
   // cache the jquery object containing the element for better performance
   var element = $(this);

   // iterate the attributes
   for (attr in attrs) {
     if (typeof attrs[attr] === 'object' && 
         typeof attrs[attr].name === 'string' && 
         (/^data-val/).test(attrs[attr].name)) {
       // Unfortunately, we can not call removeAttr directly in here, since it
       // hurts the iteration.
       toRemove.push(attrs[attr].name);
     }
   }

   for (var i = 0; i < toRemove.length; i++) {
     element.removeAttr(toRemove[i]);
   }
});

attrs.hasOwnPropertyattr对象不支持此属性或方法ErrorNo。甚至我也通过检查元素来检查chrome。它仍然显示数据val和其他数据val req等属性奇怪,它在chrome、firefox、ie中对我有效。你的html是什么样子的?好的,在迭代过程中调用removeAttr有问题。更新将修复此问题。我尝试了$.prependTo'body';然后是代码。它成功地删除了所有浏览器中的所有属性。太棒了。也在IE 7中工作: