Ersetzen Sie den Ankertext durch jquery

84

Ich möchte den Text eines HTML-Ankers ersetzen:

<a href="index.html" id="link1">Click to go home</a>

jetzt möchte ich den text 'click to go home' ersetzen

Ich habe das versucht:

alert($("link1").children(":first").val());
alert($("link1").children(":first").text());
alert($("link1").children(":first").html());

aber alles gibt mir null oder eine leere Zeichenfolge

Michel
quelle

Antworten:

138

Versuchen

$("#link1").text()

um auf den Text in Ihrem Element zuzugreifen. Das # zeigt an, dass Sie nach ID suchen. Sie suchen kein untergeordnetes Element, benötigen also keine untergeordneten Elemente (). Stattdessen möchten Sie auf den Text innerhalb des Elements zugreifen, das Ihre jQuery-Funktion zurückgibt.

Larry Lustig
quelle
1
Vielen Dank. Fühlen Sie sich erleichtert, dass ich die Antwort habe, und sehr dumm ... für das Ausprobieren aller verschiedenen Aussagen, aber das Vergessen des # -Zeichens ....
Michel
62

Um ein Element anhand seiner ID zu referenzieren, müssen Sie das verwenden # Qualifikationsmerkmal verwenden.

Versuchen:

alert($("#link1").text());

Um es zu ersetzen, können Sie verwenden:

$("#link1").text('New text');

Die .html()Funktion würde auch in diesem Fall funktionieren.

Zombat
quelle
18
$('#link1').text("Replacement text");

Die .text()Methode löscht den Text, den Sie übergeben, in den Elementinhalt. Im Gegensatz zu verwenden .html(), .text()ignoriert implizit eingebettet jeder HTML - Markup, wenn Sie also etwas inline einbetten müssen <span>, <i>oder was auch immer andere ähnliche Elemente, verwendet .html()statt.

Spitze
quelle
4

Versuchen Sie dies im Falle einer ID

$("#YourId").text('Your text');

ODER dies im Falle einer Klasse

$(".YourClassName").text('Your text');
Muhammad Attiq
quelle
-1
function liReplace(replacement) {
    $(".dropit-submenu li").each(function() {
        var t = $(this);
        t.html(t.html().replace(replacement, "*" + replacement + "*"));
        t.children(":first").html(t.children(":first").html().replace(replacement, "*" +` `replacement + "*"));
        t.children(":first").html(t.children(":first").html().replace(replacement + " ", ""));
        alert(t.children(":first").text());
    });
}
  • Erster Code findet einen Titel ersetzen t.html(t.html()
  • Zweiter Code ein Text ersetzen t.children(":first")

Stichprobe <a title="alpc" href="#">alpc</a>

alpc
quelle
1
Während der Code in Ihrer Antwort möglicherweise funktioniert, sollten Sie sich bemühen, eine hervorragende Antwort zu erstellen, die erklärt, warum und wie er funktioniert.
Ian Stapleton Cordasco