jQuery - заменить функцию - PullRequest
       4

jQuery - заменить функцию

1 голос
/ 20 ноября 2010

Как мне сделать код jQuery, который заменяет только текст в документе .HTML, а не html-теги.

Допустим, я хочу заменить все символы "b" на "c" в HTML-коде. Тогда я не хочу, чтобы HTML-код был заменен.

<b>bbbbb</b>

Я имею в виду, что при замене должно быть только:

<b>ccccc</b>

Так что b в html-коде не заменяется.

Заранее спасибо !!

Ответы [ 3 ]

1 голос
/ 20 ноября 2010

Попробуйте это: (заменяет a на z везде внутри элемента с id="main")

$('#main, #main *').contents().each(function() {
    if (this.nodeType == 3)
        this.nodeValue = this.nodeValue.replace(/a/g, 'z');
});

Вы можете изменить первый бит на $('*'), но это рискованно и, вероятно, медленно, и на этом тесте вы можете видеть, что он меняет материал в <style>, который генерируется jsfiddle ( так что он, вероятно, сделает замену и во всех <script> s).

Обратите внимание, что nodeType == 3 говорит jQuery возвращать только текстовые элементы. Вы должны использовать 3 вместо константы Node.TEXT_NODE, потому что IE 7 не распознает ее. (неожиданный сюрприз ..)

отредактировано для отражения предложений idealmachine

0 голосов
/ 20 ноября 2010

Если вы хотите заменить текст тегов в html-документе и у вас есть jQuery, не запускается по всему документу и заменяется, используйте замечательные функции jQuery для захвата текста и innerHTML вне элементов.

Например, чтобы заменить текст всех тегов <b> на текущей странице, вы можете сделать что-то вроде этого:

$("b").text("Text that will replace current text");
0 голосов
/ 20 ноября 2010

если вы используете селектор тела и берете, как все дети, он должен работать ... Я не знаю jquery, но я думаю, что вы просто используете его неправильно ... Это не нормально, что он меняет теги ... Используйте иерархию DOM, это основной инструмент Javascript ...

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