id="#alvin"
non è sintassi valida, '#' viene usato come parte di un selettore per jQuery o in CSS.
Per questo esempio molto limitato, sostituire "mela" con "arancione" in realtà semplicemente leggendo il innerHTML
e riscrivendolo. Non sto nemmeno usando jQuery per questo.
window.onload = function() {
var alvin = document.getElementById('alvin')
alvin.innerHTML = alvin.innerHTML.replace('apple', 'orange');
}
Ho usato senza jQuery perché jQuery non ha un modo pulito per selezionare i nodi di testo randagi. Quindi, cosa succede se abbiamo avvolto qualsiasi nodo di testo figlio in span? Si potrebbe fare questo:
$('#alvin').contents().filter(function() {
return this.nodeType == 3;
}).wrap('<span></span>').end();
In questo modo, ci ritroviamo con la struttura:
<a id="alvin" href="http://www.camille.com"><ins class="xxx">Anna</ins><span>apple</span></a>
Poi possiamo usare il selettore di +
adiacente per arrivare a lui, come questo - ins+span
significa un <span>
dopo un <ins>
:
var elem = $('#alvin ins+span');
elem.text(elem.text().replace('apple', 'orange'));
+1, mi hai battuto su di esso, anche se ho ancora postato la mia soluzione perché differisce leggermente :-) –
@Andy - Grazie per il +. Sì, la mia opera con l'assunzione di un posizionamento specifico. Sarà una sballata a seconda delle esigenze specifiche dell'OP. – user113716
Grazie! Sapevo che si poteva fare. Vorrei poter premiare più soluzioni come E * -E * .com (anche ad Andy). –