2011-01-12 11 views
0

Irgendwelche Ideen, warum diese Jquery nicht funktioniert?jquery ersetzen Problem

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

OK ... so habe ich einen Link, der in etwa so aussieht ...

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

Und ich will es so etwas wie folgt aussehen ...

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

Replace kann nicht auf einem jQuery-Objekt ausgeführt werden. Was möchten Sie tun? – powtac

Antwort

1

Wenn Sie etwas im Text der ein Tag verwenden diese ersetzen möchten:

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

.replace() ist eine String-Methode - sie funktioniert nicht bei einem jQuery-Objekt. Versuchen:

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

$ (this) .text ($ (this) .text(). Replace (//gi,'ert ')); - Dies ersetzt jedes Vorkommen eines Raumes. Vielen Dank! – Tom

1

Sie ersetzen sollte text oder html:

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

Oder:

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

So ersetzen Sie tatsächlich alle Instanzen Raum, müssen Sie Regex verwenden, um mit /g Modifikator wie folgt:

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

würde andere Methode split und join wie diese verwenden sein:

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

Ich bin ziemlich sicher. Text() gibt nach Wert zurück, so dass dies nicht tatsächlich den Text setzen –

+0

@Bobby: Guter Fang, ich werde aktualisieren :) – Sarfraz

1

.replace() ist eine einfache Methode Javascript, es ist nicht von jQuery verkapselt. Also ich denke, Sie möchten entweder den text() oder den href Wert von Ihren Ankern ersetzen.

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

oder

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

Was möchten Sie vielleicht sei dies stattdessen:

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

$ (this) gibt das a-Tag zurück, aber welchen Teil des A-Tags möchten Sie ersetzen? der Text?