2013-03-04 46 views
7

I collegamenti dal database sono titoli di siti Web e rendering nella pagina "Interesting Article: Autore" - ma occasionalmente il collegamento è una domanda "Where's China?: GoogleMaps". Il ?: sembra sciocco quindi volevo sostituire l'HTML ?</span>: con ?</span>.Trova e sostituisci stringa HTML con jQuery

Ecco l'jQuery ho lavorato:

$('#relatedinfo ul li a').html().replace('?</span>:','?</span>');

Ma questo in realtà non sostituirlo nel DOM. Come faccio a ottenere quella stringa per cambiare effettivamente la pagina?

risposta

19

Io suggerirei:

$('#relatedinfo ul li a').html(function(index,html){ 
    return html.replace(/<\/span>(\:)/,''); 
}); 

JS Fiddle demo.

O anche:

$('#relatedinfo ul li a').text(function(index,text){ 
    return text.replace(':',''); 
}); 

JS Fiddle demo.

Un approccio aggiornato è quello di verificare che l'ultimo carattere nel span è nella matrice di ['?','!','.'] e, se lo è, allora per rimuovere il : dal nodeValue del nextSibling:

$('#relatedinfo ul li a span').text(function(index,text){ 
    var lastchar = text.split('').pop(); 
    if (['?','!','.'].indexOf(lastchar) > -1) { 
     this.nextSibling.nodeValue = this.nextSibling.nodeValue.replace(':',''); 
    } 
}); 

JS Fiddle demo.

Riferimenti:

+0

cumuli Grazie per la risposta e le scuse per così tanto tempo per tornare intorno ad esso. La risposta è corretta ma ho incorniciato erroneamente la mia domanda e quindi la soluzione non si adatta al mio problema. Ho [biforcato il violino] (http://jsfiddle.net/danielmee/FY5Tp/2/) e, usando le informazioni che hai fornito, ho elaborato la maggior parte ... non riesco a capire sintassi per operandi OR in un'istruzione if. Ho finito per risolverlo usando! = Null :) – Daniel