Ich möchte den Text des Elements dynamisch aktualisieren:
<div>
**text to change**
<someChild>
text that should not change
</someChild>
<someChild>
text that should not change
</someChild>
</div>
Ich bin neu bei jQuery, daher scheint diese Aufgabe für mich eine große Herausforderung zu sein. Könnte mich jemand auf eine zu verwendende Funktion / Auswahl hinweisen?
Wenn es möglich ist, möchte ich dies tun, ohne einen neuen Container für den Text hinzuzufügen, den ich ändern muss.
javascript
jquery
ika
quelle
quelle
Antworten:
Mark hat mit jQuery eine bessere Lösung , aber Sie können dies möglicherweise auch in normalem JavaScript tun.
In Javascript
childNodes
gibt Ihnen die Eigenschaft alle untergeordneten Knoten eines Elements, einschließlich Textknoten.Wenn Sie also wussten, dass der zu ändernde Text immer das erste im Element sein würde, dann geben Sie zB diesen HTML-Code an:
Sie könnten dies tun:
Natürlich können Sie immer noch jQuery verwenden, um
<div>
das zuerst auszuwählen (dhvar your_div = $('your_div').get(0);
).quelle
data
odernodeValue
Eigentum.$('#yourDivId')[0].childNodes[0].nodeValue = 'New Text';
Update 2018
Da dies eine sehr beliebte Antwort ist, habe ich beschlossen, sie ein wenig zu aktualisieren und zu verschönern, indem ich den Textknoten-Selektor als Plugin zu jQuery hinzufügte.
Im folgenden Snippet sehen Sie, dass ich eine neue jQuery-Funktion definiere, die alle (und nur) die textNodes abruft. Sie können diese Funktion auch mit beispielsweise der
first()
Funktion verketten. Ich schneide den Textknoten ab und überprüfe, ob er nach dem Zuschneiden nicht leer ist, da Leerzeichen, Tabulatoren, neue Zeilen usw. auch als Textknoten erkannt werden. Wenn Sie diese Knoten auch benötigen, entfernen Sie diese einfach aus der if-Anweisung in der jQuery-Funktion.Ich habe ein Beispiel hinzugefügt, wie der erste Textknoten ersetzt wird und wie alle Textknoten ersetzt werden.
Dieser Ansatz erleichtert das Lesen des Codes und die mehrfache Verwendung für verschiedene Zwecke.
Das Update 2017 (adrach) sollte auch weiterhin funktionieren, wenn Sie dies bevorzugen.
Als jQuery-Erweiterung
Code-Snippet anzeigen
Javascript (ES) eqivilant
Code-Snippet anzeigen
Update 2017 (adrach):
Es sieht so aus, als hätten sich einige Dinge geändert, seit dies veröffentlicht wurde. Hier ist eine aktualisierte Version
Ursprüngliche Antwort (funktioniert nicht für aktuelle Versionen)
Quelle: http://api.jquery.com/contents/
quelle
.filter(':first')
, aber.first()
stattdessen hat die Verwendung für mich funktioniert. Vielen Dank!.text()
(siehe diese jsfiddle ), sondern mit.replaceWith()
( jsfiddle hier ).nodeType=3
ist, ist der mittlere Filterknotentyp "TEXT", w3schools.com/jsref/prop_node_nodetype.asp für weitere InformationenSiehe In Aktion
Markup:
quelle
Dies ändert nur den ersten Textknoten
quelle
Schließen Sie einfach den zu ändernden Text in eine Spanne mit einer Klasse ein, die Sie auswählen möchten.
Beantwortet nicht unbedingt Ihre Frage, die ich kenne, aber wahrscheinlich eine bessere Codierungspraxis. Halten Sie die Dinge sauber und einfach
Voilà!
quelle
Für den von Ihnen erwähnten speziellen Fall:
... das ist sehr einfach:
Sie geben nicht an, wie Sie dies verallgemeinern möchten. Wenn Sie beispielsweise den Text des ersten Textknotens innerhalb von ändern möchten
<div>
, können Sie Folgendes tun:quelle
quelle
Hier ist noch eine andere Methode: http://jsfiddle.net/qYUBp/7/
HTML
JQUERY
quelle
Viele gute Antworten hier, aber sie behandeln nur einen Textknoten mit Kindern. In meinem Fall musste ich alle Textknoten bearbeiten und HTML-Kinder ignorieren, ABER DIE BESTELLUNG ERHALTEN.
Wenn wir also einen Fall wie diesen haben:
Wir können den folgenden Code verwenden, um nur den Text zu ändern UND DIE BESTELLUNG ZU ERHALTEN
Hier ist der jsfiddle davon funktioniert
quelle
Ich denke, Sie suchen nach .prependTo ().
http://api.jquery.com/prependTo/
quelle
Einfache Antwort:
quelle
Das Problem mit Marks Antwort ist, dass Sie auch leere Textknoten erhalten. Lösung als jQuery-Plugin:
quelle
Dies ist eine alte Frage, aber Sie können eine einfache Funktion wie diese erstellen, um Ihr Leben zu erleichtern:
Beispiel:
Verwendung:
quelle
2019 vesrsion - Short & Simple
Erläuterung
document.querySelector('#your-div-id')
wird zur Auswahl des übergeordneten Elements verwendet (das Element, dessen Text Sie ändern möchten).childNodes[0]
wählt den Textknoten aus.nodeValue = 'new text'
setzt den Textknotenwert auf "neuer Text"Diese Antwort ist möglicherweise von Dean Martins Kommentar inspiriert. Ich kann es nicht mit Sicherheit sagen, da ich diese Lösung seit Jahren verwende. Ich dachte nur, ich sollte diese Wahrscheinlichkeit hier posten, weil sich einige Leute mehr darum kümmern als um die Tatsache, dass dies die beste Lösung ist.
quelle