Reputation: 22527
I am trying to write line of jquery that finds an input that has a class that begins with "a\d" (the letter a and a number) and replace the number with another number.
This is what I have tried, does anyone notice why this would not work?
$('form').find('input[class^="a\d"]').replace(/a\d+/,'a22');
Please note: this is one line out of many, I have extracted this line because it is where I am having trouble.
Upvotes: 3
Views: 8903
Reputation: 82903
Try this
var regExp = /(a\d+)(.*)?/;
$('form').find('input[class^="a"]').each(
function()
{
var el = this;
var className = el.replace(regExp, "a22$2");
el.className = className;
}
);
Upvotes: 0
Reputation: 322492
You'll need to do it more like this:
$('form').find('input[class^="a"]').attr('class', function(i,cls) {
if( /a\d/.test( cls ) ) {
return cls.replace(/a\d+/,'a22');
}
});
When using .attr()
to set the class
(or any attribute), you can pass it a function which has 2 parameters. The i
is the current index in the iteration. The cls
is the current value of class
.
The return
value will be used to update the class
. If nothing is returned, nothing will be changed.
Upvotes: 11