У меня есть этот код в моем теле:
<p>
hello ok hello no
<p>
<p>
ok hello ok ko
<p>
Я хочу заменить для каждого <p>
текст "ok" <img>
<img src="ok.png" alt="good word"/>
Можно ли сделать это?
Примечание: я должен применить эту функцию для других текстов, которые могут содержать апостроф и/или цитату
Используйте each
:
$('p').each(function() {
this.innerHTML = this.innerHTML.replace(/\bok\b/g, '<img src="ok.png" alt="good word"/>')
})
Я использовал /\bok\b/
чтобы что-то вроде token
не совпало. \b
означает "граница слова".
Я лично предлагаю:
$('p').html(function(i,h){
return h.replace(/\bok/g,'<img src="ok.png" alt="good word" />');
});
Рекомендации:
попробуйте replaceWith - jquery
$( "<p>" ).replaceWith( '<img src="ok.png" alt="good word"/>');
$( "</p>" ).replaceWith( "" );
для получения дополнительной информации см. документацию по jquery http://api.jquery.com/replaceWith/
$('<p>')
создает элемент p
а второй ничего не делает.
надеюсь, это поможет
var x=$('p').html();
var n=x.replace("ok","<img src='ok.png' alt='good word'>");
$('p').html(n);
p
с текстом первого p
. Вы пробовали это? Вы можете попробовать запустить его на этой странице и посмотреть, почему он не работает.