javascript - pagina - jquery desplazamiento vertical
jQuery: configuraciĆ³n del texto de un elemento solo sin eliminar otro elemento(ancla) (3)
Tengo un elemento como este:
<td>
<a>anchor</a>
[ some text ]
</td>
Y necesito configurar su texto en jQuery, sin quitar el ancla.
El contenido del elemento puede variar en orden (texto antes o después), y el texto real es desconocido.
Gracias
Nueva actualización
Esto es lo que encontré usando, asume solo un nodo de texto:
function setTextContents($elem, text) {
$elem.contents().filter(function() {
if (this.nodeType == Node.TEXT_NODE) {
this.nodeValue = text;
}
});
}
setTextContents( $(''td''), "new text");
Si es posible poner el texto en un lapso:
<td id=''someID''>
<a>anchor</a>
<span>[ some text ]</span>
</td>
Tu puedes hacer:
$(''td#someID span'').text(''new text'')
Sin cambiar el marcado:
var anchor = $(''td'').find(''a'').clone();
$(''td'').text(''{ some other text }'').prepend(anchor);
La respuesta de Neal es mi sugerencia. jQuery no tiene una forma de seleccionar nodos de texto ¿Cómo selecciono nodos de texto con jQuery? .
Cambiar tu estructura HTML hará que el código más simple. Si no puede hacerlo, puede usar la propiedad childNodes para buscar nodos del tipo 3 (TEXT_NODE)
Aquí hay un código de ejemplo que asume que el último nodo es el nodo que desea editar. Este es un enfoque mejor que reemplazar todo el contenido de la td porque podría perder los controladores de eventos cuando vuelva a crear el HTML.
$(''a'').click(() => console.log(''<a> was clicked''))
$(''#btn'').click(() =>
$(''.someClass'').get(0).lastChild.nodeValue = " New Value");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class=''someClass''>
<a href="javascript:void(0)">anchor</a> [ some text ]
</div>
<button id=''btn''> Change text without losing a tag''s handler</button>