jQuery находит и заменяет текст без идентификатора элемента

Я играю вокруг с текстом поиска и замены.

Единственная проблема, которую я имею, находит текстовую строку, которая не присоединена к элементу с идентификатором. Иначе это было бы легко.

Я пробую что-то вроде этого:

$("*").each(function () {
    $(this).html(this.html().replace('Original Text','New Text'));
});

Не работа слишком хорошо.
Кто-либо сталкивается с этим прежде?

Кроме того, если у меня есть несколько слов или фраз для нахождения и заменения, как это влияет на скорость/вычислительную мощность браузера пользователя? Действительно ли это - пожиратель ресурсов памяти?

12
задан Gumbo 27 February 2010 в 22:24
поделиться

4 ответа

Takpar, ваш код тоже работает. Кажется, что он не дает работать некоторым другим вещам, но только тем, которые я вытягиваю динамически. Например, когда я использую .ajax(). Не уверен почему, но я столкнулся именно с этим. Я протестирую еще.

По смежной теме, код Gumbo работает:

$("*").each(function () {
    if ($(this).children().length == 0) {
        $(this).text($(this).text().replace('Subject:','Name:'));
    }
});

Единственное, с чем я сталкиваюсь, это с заменой текста, который загружается после загрузки страницы.

У меня есть несколько функций javascript, которые отображают данные с сервера, но только после того, как страница загрузит все элементы. Например, пользователь выбирает значение из выпадающего списка, что инициирует событие для загрузки списка продуктов из базы данных.

Я форматирую некоторые из этих продуктов следующим образом:

Granny Smith Apples
Price: x.xx per pound
Nutritional facts....

Я хочу найти только замену слова "Цена:", и, возможно, заменить его на "Стоимость:".

Но, как я уже говорил, эти данные еще не загружены.

Это ограничение, с которым мне придется смириться?

6
ответ дан 2 December 2019 в 04:53
поделиться
$("*").contents().each(function() {
    if(this.nodeType == 3)
        this.nodeValue = this.nodeValue.replace("old", "new");
});
20
ответ дан 2 December 2019 в 04:53
поделиться

Вам нужен селектор : contains () . http://api.jquery.com/contains-selector/

$("*:contains('Original Text')").each(...);
1
ответ дан 2 December 2019 в 04:53
поделиться

почему бы вам просто не использовать:

$('body').html($('body').html().replace('Original Text','New Text'));
4
ответ дан 2 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: