JQuery заменить все вхождения строки в HTML-странице
65762 просмотра
5 ответа
Я работаю над проектом, где мне нужно заменить все вхождения строки другой строкой. Тем не менее, я хочу заменить строку, только если это текст. Например, я хочу включить это ...
<div id="container">
<h1>Hi</h1>
<h2 class="Hi">Test</h2>
Hi
</div>
в...
<div id="container">
<h1>Hello</h1>
<h2 class="Hi">Test</h2>
Hello
</div>
В этом примере все «Hi» были превращены в «Hello», за исключением «Hi» в качестве класса h2. Я пытался...
$("#container").html( $("#container").html().replace( /Hi/g, "Hello" ) )
... но это заменяет все вхождения "Привет" в HTML, а также
Автор: Calebmer Источник Размещён: 13.11.2019 11:34Ответы (5)
17 плюса
Этот:
$("#container").contents().each(function () {
if (this.nodeType === 3) this.nodeValue = $.trim($(this).text()).replace(/Hi/g, "Hello")
if (this.nodeType === 1) $(this).html( $(this).html().replace(/Hi/g, "Hello") )
})
Производит это:
<div id="container">
<h1>Hello</h1>
<h2 class="Hi">Test</h2>
Hello
</div>
Автор: j08691
Размещён: 03.08.2014 09:48
9 плюса
Хорошие результаты с:
function str_replace_all(string, str_find, str_replace){
try{
return string.replace( new RegExp(str_find, "gi"), str_replace ) ;
} catch(ex){return string;}}
и легче запомнить ...
Автор: Cyril Jacquart Размещён: 07.05.2015 09:157 плюса
replacedstr = str.replace(/needtoreplace/gi, 'replacewith');
нужное место не должно округляться '
1 плюс
//Get all text nodes in a given container
//Source: http://stackoverflow.com/a/4399718/560114
function getTextNodesIn(node, includeWhitespaceNodes) {
var textNodes = [], nonWhitespaceMatcher = /\S/;
function getTextNodes(node) {
if (node.nodeType == 3) {
if (includeWhitespaceNodes || nonWhitespaceMatcher.test(node.nodeValue)) {
textNodes.push(node);
}
} else {
for (var i = 0, len = node.childNodes.length; i < len; ++i) {
getTextNodes(node.childNodes[i]);
}
}
}
getTextNodes(node);
return textNodes;
}
var textNodes = getTextNodesIn( $("#container")[0], false );
var i = textNodes.length;
var node;
while (i--) {
node = textNodes[i];
node.textContent = node.textContent.replace(/Hi/g, "Hello");
}
Обратите внимание, что это также будет соответствовать словам, где «Привет» является только частью слова, например, «Холм». Чтобы соответствовать только целому слову, используйте/\bHi\b/g
0 плюса
здесь вы идете => http://jsfiddle.net/c3w6X/1/
var children='';
$('#container').children().each(function(){
$(this).html($(this).html().replace(/Hi/g,"Hello")); //change the text of the children
children=children+$(this)[0].outerHTML; //copy the changed child
});
var theText=$('#container').clone().children().remove().end().text(); //get the text outside of the child in the root of the element
$('#container').html(''); //empty the container
$('#container').append(children+theText.replace(/Hi/g,"Hello")); //add the changed text of the root and the changed children to the already emptied element
Автор: Amin Jafari
Размещён: 03.08.2014 09:40
Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- jquery Прокрутка переполненных DIV с помощью JavaScript
- jquery Экранирование строк HTML с помощью jQuery
- jquery Как сравнить HTML-сущность с JQuery
- jquery Есть ли функция "существует" для jQuery?
- jquery Как удалить все параметры в окне выбора, а затем добавить один вариант и выбрать его с помощью jQuery?
- html Определить часовой пояс пользователя
- html Как мне дать моим веб-сайтам значок для iPhone?
- html Как отключить автозаполнение браузера в поле веб-формы / теге ввода?
- html Как автоматически изменить размер текстовой области с помощью Prototype?
- replace Как выполнить подстановку Perl для строки, сохранив оригинал?
- replace How to replace a character by a newline in Vim
- replace как заменить несколько строк в Oracle
- replace Заменить в нескольких файлах - графический инструмент для Linux
- replace Эффективная замена строки Javascript