Найти и заменить строку HTML на jQuery

ссылки из базы данных являются заголовками сайтов и отображаются на странице"Интересные Статьи: автор "- но иногда ссылка является вопросом"где Китай?: GoogleMaps". The ?: выглядит глупо, поэтому я хотел заменить HTML ?</span>: С ?</span>.

вот jQuery, который я разработал:

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

но это фактически не заменяет его в DOM. Как заставить эту строку изменить страницу?

2 ответов


Я предлагаю:

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

JS Fiddle demo.

или еще:

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

JS Fiddle demo.

обновленный подход состоит в том, чтобы проверить, что последний символ в span в массиве ['?','!','.'] и, если это так, то удалить : от свойства устанавливается равным В / / сделать так:

$('#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 демо.

ссылки:


вы также можете использовать regex:

var rx = new RegExp('(?![^<&]+[>;])' + searchString, 'gi');

$('#relatedinfo').html(function (i, html) {
   return html.replace(rx, '<b>$&</b>')
});

источник : jQuery для поиска / замены html-текста, когда он не находится внутри html-тега, отличного от P, DIV, SPAN, TD