superUntitled
superUntitled

Reputation: 22527

jQuery: replace() class name / regex

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

Answers (2)

Chandu
Chandu

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

user113716
user113716

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

Related Questions