Les liens de la base de données sont des titres de sites Web et sont affichés sur la page " Article intéressant : Auteur" - mais le lien est parfois une question " Où est la Chine? : GoogleMaps". Le ?:
a l'air ridicule alors je voulais remplacer le HTML ?</span>:
par ?</span>
.
Voici le jQuery que j'ai élaboré:
$('#relatedinfo ul li a').html().replace('?</span>:','?</span>');
Mais cela ne le remplace pas réellement dans le DOM. Comment puis-je obtenir cette chaîne pour réellement changer la page?
Je suggérerais:
$('#relatedinfo ul li a').html(function(index,html){
return html.replace(/<\/span>(\:)/,'');
});
Ou même:
$('#relatedinfo ul li a').text(function(index,text){
return text.replace(':','');
});
Une approche mise à jour consiste à vérifier que le dernier caractère de la span
se trouve dans le tableau de ['?','!','.']
et, le cas échéant, à supprimer le :
de la nodeValue du 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(':','');
}
});
Références:
Vous pouvez aussi utiliser regex:
var rx = new RegExp('(?![^<&]+[>;])' + searchString, 'gi');
$('#relatedinfo').html(function (i, html) {
return html.replace(rx, '<b>$&</b>')
});