id="#alvin"
no es una sintaxis válida, '#' se utiliza como parte de un selector de jQuery o en el CSS.
Para este ejemplo muy limitado, reemplace "apple" por "orange". De hecho, simplemente leería innerHTML
y lo reescribiría. Ni siquiera estoy usando jQuery para esto.
window.onload = function() {
var alvin = document.getElementById('alvin')
alvin.innerHTML = alvin.innerHTML.replace('apple', 'orange');
}
que se utiliza sin jQuery jQuery porque no tiene una forma limpia para seleccionar los nodos de texto callejeros. Entonces, ¿qué pasa si envolvemos los nodos de texto secundarios en tramos? Podríamos hacer esto:
$('#alvin').contents().filter(function() {
return this.nodeType == 3;
}).wrap('<span></span>').end();
De esa manera, nos quedamos con la estructura:
<a id="alvin" href="http://www.camille.com"><ins class="xxx">Anna</ins><span>apple</span></a>
entonces podemos utilizar el selector adyacente +
para llegar a ella, como esto - ins+span
significa una <span>
después de una <ins>
:
var elem = $('#alvin ins+span');
elem.text(elem.text().replace('apple', 'orange'));
+1, me ganaste, aunque todavía publiqué mi solución porque difiere ligeramente :-) –
@Andy - Gracias por el +. Sí, el mío opera con la suposición de un posicionamiento específico. Será un lanzamiento según las necesidades específicas de OP. – user113716
Gracias! Sabía que se podría hacer. Ojalá pudiera otorgar múltiples soluciones como E * -E * .com (a Andy, también). –