Я играю вокруг с текстом поиска и замены.
Единственная проблема, которую я имею, находит текстовую строку, которая не присоединена к элементу с идентификатором. Иначе это было бы легко.
Я пробую что-то вроде этого:
$("*").each(function () {
$(this).html(this.html().replace('Original Text','New Text'));
});
Не работа слишком хорошо.
Кто-либо сталкивается с этим прежде?
Кроме того, если у меня есть несколько слов или фраз для нахождения и заменения, как это влияет на скорость/вычислительную мощность браузера пользователя? Действительно ли это - пожиратель ресурсов памяти?
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....
Я хочу найти только замену слова "Цена:", и, возможно, заменить его на "Стоимость:".
Но, как я уже говорил, эти данные еще не загружены.
Это ограничение, с которым мне придется смириться?
$("*").contents().each(function() {
if(this.nodeType == 3)
this.nodeValue = this.nodeValue.replace("old", "new");
});
Вам нужен селектор : contains ()
. http://api.jquery.com/contains-selector/
$("*:contains('Original Text')").each(...);
почему бы вам просто не использовать:
$('body').html($('body').html().replace('Original Text','New Text'));