Wie legen Sie die text-Knoten mit dem Wert mithilfe von jQuery
Ich habe eine HTML-Struktur wie diese:
<div class="votes">
<b>5</b> Votes
<a id="vote-' + element_id +'" href="#" class="vote-btn"></a>
</div>
Habe ich geschafft, den text nach der 5 also Stimmen mit:
var voteTextNode = $(this).parent('div').contents().filter(function() {
return this.nodeType == 3;
});
var voteText = voteTextNode.text();
nun will ich diesen text ändern Stimmen die entsprechende Anzahl von Stimmen . Ich habe dies ausprobiert:
voteNewText = ( newCount == '1' ) ? 'Vote' : 'Votes';
voteTextNode.text(voteNewText);
aber es funktioniert nicht für mich. Ich habe auch versucht, den code aus diesem link:
Wie kann ich abrufen, Bearbeiten und ersetzen von text-Knoten mithilfe von jQuery?
aber auch das klappt nicht bei mir, sagen Sie mir, wo ich falsch mache
- Wenn irgendeine Art von Grund, warum Sie nicht einwickeln Stimmen in <span>? Manipuliert DOM-schneller und einfacher als mit reinem text.
- tatsächlich span style definiert, die nicht passt das design in diesem Bereich. ich weiß, ich kann ändern Sie den Stil der jeweiligen Spanne, sondern wollen einfach nur wissen, ob es einen alternativen Weg, das zu tun....
Du musst angemeldet sein, um einen Kommentar abzugeben.
steckte es in einen span
dann
BEARBEITEN, wenn Sie nicht verwenden möchten, span -, dann ändern Sie einfach den text für das element nach dem b-tag:
Als Sie gesehen haben, jQuery ist nicht wirklich gemacht für das handling von text-Knoten. Ihre
var voteTextNode
wird eine jQuery-Instanz, in der Hand einen Satz von text-Knoten. Sie können kaum manipulieren mit.text()
, die würde fügen Sie einige neue TextNodes in Sie.Doch sollte diese Arbeit:
Aber mit einfachen dom-Methoden kann es klarer werden:
Behandeln Sie es wie der DOM-Baum ist es: was Sie wahrscheinlich wollen, ist, um die erste
<b>
element in jedem<div>
mit der Klasse "Stimmen" und ändern Sie den text im text-Knoten, der unmittelbar darauf folgt. jQuery ist gut bei der Auswahl und Iteration über Elemente und verwenden es für diesen Teil, wenn Sie möchten. Sobald Sie haben die<b>
Elemente, wechseln Sie in regelmäßigen DOM. Hier ist ein Beispiel:Demo: http://jsfiddle.net/Qq3T7/
Code:
Können Sie ändern Sie die ursprünglichen markup? Haben Sie eine viel einfachere Zeit, dies zu tun, wenn Sie nur wickeln Sie den text, den Sie ändern möchten, in einem tag:
Und dann kannst du einfach den text: