Eu gostaria de atualizar o texto do elemento dinamicamente:
<div>
**text to change**
<someChild>
text that should not change
</someChild>
<someChild>
text that should not change
</someChild>
</div>
Eu sou novo no jQuery, então esta tarefa parece ser bastante desafiadora para mim. Alguém poderia me indicar uma função / seletor para usar?
Se for possível, gostaria de fazer isso sem adicionar um novo contêiner para o texto que preciso alterar.
javascript
jquery
ika
fonte
fonte
Respostas:
Mark tem uma solução melhor usando jQuery , mas você também pode fazer isso em JavaScript normal.
Em Javascript, o
childNodes
propriedade fornece todos os nós filhos de um elemento, incluindo nós de texto.Portanto, se você sabia que o texto que deseja alterar sempre será a primeira coisa no elemento, forneça, por exemplo, este HTML:
Você poderia fazer isso:
Claro, você ainda pode usar jQuery para selecionar o
<div>
em primeiro lugar (ou sejavar your_div = $('your_div').get(0);
).fonte
data
ounodeValue
propriedade.$('#yourDivId')[0].childNodes[0].nodeValue = 'New Text';
Atualização 2018
Como essa é uma resposta muito popular, decidi atualizá-la e embelezá-la um pouco adicionando o seletor de textnode ao jQuery como um plugin.
No trecho abaixo você pode ver que eu defino uma nova função jQuery que obtém todos (e apenas) os textNodes. Você pode encadear esta função também com, por exemplo, o
first()
função. Eu faço um corte no nó de texto e verifico se não está vazio após o corte porque espaços, tabulações, novas linhas, etc. também são reconhecidos como nós de texto. Se você precisar desses nós também, basta removê-los da instrução if na função jQuery.Eu adicionei um exemplo de como substituir o primeiro nó de texto e como substituir todos os nós de texto.
Essa abordagem torna mais fácil ler o código e usá-lo várias vezes e com finalidades diferentes.
A atualização de 2017 (adrach) ainda deve funcionar bem, se você preferir.
Como extensão jQuery
Exibir trecho de código
Javascript (ES) eqivilant
Exibir trecho de código
Atualização de 2017 (adrach):
Parece que várias coisas mudaram desde que isso foi postado. Aqui está uma versão atualizada
Resposta original (não funciona para as versões atuais)
Fonte: http://api.jquery.com/contents/
fonte
.filter(':first')
, mas em.first()
vez disso funcionou para mim. Obrigado!.text()
(veja este jsfiddle ), mas sim com.replaceWith()
( jsfiddle aqui ).nodeType=3
isso significa filtrar apenas o tipo de nó de "TEXTO", w3schools.com/jsref/prop_node_nodetype.asp para mais informaçõesVeja em ação
Markup:
fonte
Isso muda apenas o primeiro textnode
fonte
Basta envolver o texto que deseja alterar em um intervalo com uma classe para selecionar.
Não necessariamente responde à sua pergunta, eu sei, mas, provavelmente, uma prática de codificação melhor. Mantenha as coisas limpas e simples
Voilà!
fonte
Para o caso específico que você mencionou:
... isso é muito fácil:
Você não declara como deseja generalizar isso. Se, digamos, você deseja alterar o texto do primeiro nó de texto dentro do
<div>
, você pode fazer algo assim:fonte
fonte
Aqui está ainda um outro método: http://jsfiddle.net/qYUBp/7/
HTML
JQUERY
fonte
Muitas respostas boas aqui, mas eles lidam apenas com um nó de texto com filhos. No meu caso, eu precisava operar em todos os nós de texto e ignorar os filhos html, MAS PRESERVE A ORDEM.
Portanto, se tivermos um caso como este:
Podemos usar o seguinte código para modificar apenas o texto E PRESERVAR O PEDIDO
Aqui está a jsFiddle dele trabalhando
fonte
Acho que você está procurando por .prependTo ().
http://api.jquery.com/prependTo/
fonte
Resposta simples:
fonte
O problema com a resposta de Mark é que você também obtém textnodes vazios. Solução como plugin jQuery:
fonte
Esta é uma questão antiga, mas você pode fazer uma função simples como esta para tornar sua vida mais fácil:
Exemplo:
Uso:
fonte
Versão 2019 - curta e simples
Explicação
document.querySelector('#your-div-id')
é usado para selecionar o pai (o elemento cujo texto você está prestes a alterar).childNodes[0]
seleciona o nó de texto.nodeValue = 'new text'
define o valor do nó de texto para "novo texto"Esta resposta é possivelmente inspirada no comentário de Dean Martin. Não posso dizer com certeza, já que uso essa solução há anos. Achei que deveria postar essa probabilidade aqui porque algumas pessoas se preocupam mais com ela do que com o fato de ser a melhor solução.
fonte