Tom
Tom

Reputation: 12988

jquery replace problem

Any ideas why this jquery is not working?

$("div.aboutText p a").each( function() {
    $(this).replace(' ', 'ert');
});

OK... so I have a link that looks something like this...

<a href="#">My Link</a>

And I want it to look something like this...

<a href="#">MyertLink</a>

Upvotes: 0

Views: 2157

Answers (6)

Sarfraz
Sarfraz

Reputation: 382656

You should replace text or html:

$(this).html($(this).html().replace(" ", "ert"));

Or:

$(this).text($(this).text().replace(" ", "ert"));

To actually replace all instances of space, you will have to use regex with /g modifier like this:

$(this).text($(this).text().replace(/' '/g, 'ert'));

Another method would be using split and join like this:

$(this).text($(this).text().split(' ').join('ert'));

Upvotes: 1

Jimmy Chandra
Jimmy Chandra

Reputation: 6580

What you want might be this instead:

$("div.aboutText p a").each(function() {
  var t = $(this).text().replace(" ","ert");
  $(this).text(t);
});

$(this) will return the a tag, but what part of the A tag are you trying to replace? the text?

Upvotes: 0

powtac
powtac

Reputation: 41040

When you want to replace something in the text of the a tag use this:

$("div.aboutText p a").each( function() {
    $(this).text($(this).text().replace('/ /', 'ert'));
});

Upvotes: 1

jAndy
jAndy

Reputation: 235962

.replace() is a plain Javascript method, it's not encapsulated by jQuery. So I guess you want to replace either the text() or the href value from your anchors.

$("div.aboutText p a").each( function() {
    $(this).text(function(i, text) {
        return text.replace(' ', 'ert');
    });
});

or

$("div.aboutText p a").each( function() {
    $(this).attr('href', (function(i, href) {
        return href.replace(' ', 'ert');
    });
});

Upvotes: 1

Bobby Jack
Bobby Jack

Reputation: 16018

.replace() is a string method - it won't work on a jQuery object. Try:

$(this).text($(this).text().replace(" ", "ert"))

Upvotes: 3

Related Questions