jQuery trova e sostituisce stringa

Ho da qualche parte sul sito web un testo specifico, diciamo “lollypops”, e voglio sostituire tutte le occorrenze di questa stringa con “marshmellows”. Il problema è che non so dove sia esattamente il testo. So che potrei fare qualcosa come:

$(body).html($(body).html().replace('lollypops', 'marshmellows')); 

Probabilmente funzionerebbe, ma ho bisogno di riscrivere il minor numero ansible di HTML, quindi penso a qualcosa del tipo:

  1. cerca la stringa
  2. trova l’elemento genitore più vicino
  3. riscrivi solo l’elemento genitore più vicino
  4. sostituirlo anche negli attributi, ma non tutti, ad esempio sostituirlo in class , ma non in src

Ad esempio, avrei una struttura come questa

  

lollypops

lollypops

Hello, World! Cool image

In questo esempio, ogni occorrenza di “lollypops” verrebbe sostituita, solo <img src="https://stackoverflow.com/questions/5115152/jquery-find-and-replace-string/... rimarrebbe la stessa e gli unici elementi che sarebbero effettivamente manipolati sarebbero ed entrambi s.
Qualcuno sa come si fa questo?

Potresti fare qualcosa del genere:

 $("span, p").each(function() { var text = $(this).text(); text = text.replace("lollypops", "marshmellows"); $(this).text(text); }); 

Sarà meglio marcare tutti i tag con testo che deve essere esaminato con un nome di class adatto.

Inoltre, questo potrebbe avere problemi di prestazioni. jQuery o javascript in generale non sono adatti per questo tipo di operazioni. Stai meglio facendo lato server.

Di seguito è riportato il codice che ho usato per sostituire del testo, con testo colorato. È semplice, ha preso il testo e lo ha sostituito all’interno di un tag HTML . Funziona per ogni parola in quel tag di class.

 $('.hightlight').each(function(){ //highlight_words('going', this); var high = 'going'; high = high.replace(/\W/g, ''); var str = high.split(" "); var text = $(this).text(); text = text.replace(str, ""+str+""); $(this).html(text); }); 

Perché non si aggiunge una class al contenitore stringa e quindi si sostituisce il testo interno? Proprio come in questo esempio.

HTML:

 

lollipops

lollipops

Hello, World! Cool image

jQuery:

 $(document).ready(function() { $('.swapText').text("marshmallows"); });