Найдите текст (A) и замените его текстом (B) + HTML - PullRequest
3 голосов
/ 29 июля 2010

Я хотел бы найти с помощью jquery какой-то конкретный текст и заменить его обновленной версией, включающей немного HTML.

Я пробовал это , которое работает, когда я используютолько текст:

<script type="text/javascript" >
    jQuery(document).ready(function(){

    jQuery("*").contents().each(function() {
    if(this.nodeType == 3)
    this.nodeValue = this.nodeValue.replace("hello mum", "bye bye mum");
    });

    })
</script>

Однако, если я добавлю некоторый текст + HTML для замены целевого выражения, он будет «отформатирован» и прочитан как обычный текст ...

Знаете ли выребята какое-то решение этой проблемы?Могу ли я добавить HTML в заменяющее выражение?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 29 июля 2010

jQuery немного проблематичен, когда речь идет о текстовых узлах. Кроме того, поскольку вы напрямую управляете содержимым текстового узла, весь HTML будет рассматриваться как текст.

Самое простое решение, которое я могу придумать, немного хакерское, но прекрасно работает :)

Заменить текстовый узел фиктивным HTML-элементом. Затем замените этот фиктивный HTML-элемент заменяющим HTML.

var isTextNode = this.nodeType == 3;
var matchesText = this.nodeValue.indexOf('hello mum') > -1;

if(isTextNode && matchesText) {
    // replace text node with dummy element
    // so jQuery can be used
    var dummy = $('<b>');
    this.parentNode.replaceChild(dummy[0], this);

    dummy.replaceWith('my <b>awesome</b> html now <i>works</i>');
}
0 голосов
/ 29 июля 2010

this.nodeValue = this.nodeValue.replace («привет, мама», «пока, мама»);

изменено на

this.nodeValue = this.nodeValue.replaceWith ("привет мама", "

некоторые вещи html

");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...