0

I would like to remove all the attributes that attribute name starts with 'data-val' in the fields that has a class 'read-only-state'

 jQuery("[data-val^='tr']" )  

This will give attribute 'data-val' value that starts with 'tr'

But i need to remove all the attributes that starts with 'data-val' in the matched elements.

How can i do it?

Murali Murugesan
  • 22,423
  • 17
  • 73
  • 120

1 Answers1

7

You can use vanilla javascript's attributes for this:

$('.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]);
   }
});
Beat Richartz
  • 9,474
  • 1
  • 33
  • 50