如何替换jQuery中的任何字符串?
假设我有一个字符串"-9o0-9909",我想用另一个字符串替换它。
在问问题之前如何使用jQuery将HTML块替换为HTML块的可能重复,最好检查一下系统在输入问题标题时提出的自动建议
您能否详细说明为什么您认为jquery是必经之路-到目前为止的答案可能不正确。
我可以在c#页面,javascript,数据库和html页面中更改文本,但是我在考虑是否有可能在页面加载后使用jquery来实现。 我正在尝试节省时间并学习新的东西:)
您可以使用以下内容替换页面正文中第一个出现的单词:
var replaced = $("body").html().replace('-9o0-9909','The new string');
$("body").html(replaced);
如果要替换所有出现的单词,则需要使用正则表达式并将其声明为全局/g:
var replaced = $("body").html().replace(/-1o9-2202/g,'The ALL new string');
$("body").html(replaced);
如果您想要一个班轮:
$("body").html($("body").html().replace(/12345-6789/g,'abcde-fghi'));
您基本上是将页面标记内的所有HTML都带入一个字符串变量,使用replace()查找并用新字符串更改首次出现的找到的字符串。或者,如果您要查找并替换所有出现的字符串,请在混合中引入一些正则表达式。
在此处查看演示-在左上方查看HTML,以查看原始文本,下方的jQuery和右下方的输出。
代码工作得很好,谢谢scoobler。 jQuery(function($){var replace = $(" body")。html()。replace(/ 12212-522-1212 / ig,2121-2121-0000); $(" body")。html(replaced) ;});
我认为这不是非常有效...我们应该寻找更好的解决方案!
该解决方案不好,因为它更改了HTML DOM。它正在替换完整的HTML,因此重新插入了页面上的所有内容,这对于简单的网站来说还不错,但是如果您有很多JavaScript,随着DOM的更改,它们将被破坏。
除了是一个好的解决方案之外,$(" body")。html()将没有body标签。如果您打算替换body标签或其属性上的某些内容,请使用externalHTML。
是的,这样做会重新触发页面上的脚本;除了最简单的情况外,它不是解决所有问题的通用解决方案。
就像该线程中提到的其他内容一样,替换整个HTML主体不是一个好主意,因为它会重新插入整个DOM,并有可能破坏作用于这些元素的任何其他JavaScript。
相反,使用jQuery过滤器仅替换页面上的文本,而不替换DOM元素本身:
$('body :not(script)').contents().filter(function() {
return this.nodeType === 3;
}).replaceWith(function() {
return this.nodeValue.replace('-9o0-9909','The new string');
});
this.nodeType是我们要替换其内容的节点的类型。 nodeType 3是文本。在此处查看完整列表。
是的,这一个没有破坏javascript,而另一个没有破坏javascript,大大的进步!
...I have a string"-9o0-9909" and I want to replace it with another string.
下面的代码可以做到这一点。
var str = '-9o0-9909';
str = 'new string';
除了玩笑,用JavaScript替换文本节点并非易事。
我写了一篇关于此的文章:用JavaScript替换文本。
链接上的代码几乎可以处理所有情况。对我来说,它在集合中的上令人不快(child是null),并且在splitText上还会发生莫名其妙的崩溃,其原因是"分割偏移超出了文本节点的长度"。同样,"画布"拼写为" cavas"。不过,+ 1。
@bishop谢谢,我绝对需要更新该帖子。
别客气。我喜欢遵循您的代码这么短而又容易,我只是无法让它适应我的用例。我最终选择了padolseys的findAndReplaceDOMText库-重量更大,但涵盖了我能找到的所有常见情况。
html替换的想法很好,但是如果对document.body完成操作,页面将闪烁并且广告将消失。
我的解决方案:
$("*:contains('purrfect')").each(function() {
var replaced = $(this).html().replace(/purrfect/g,"purrfect");
$(this).html(replaced);
});
查阅Padolsey关于DOM查找和替换的文章,以及实现所描述算法的库。
在此示例用法中,我用tel:方案链接替换了看起来像美国电话号码的中的所有文本:
findAndReplaceDOMText(document.getElementById('content'), {
find:/\b(\d\d\d-\d\d\d-\d\d\d\d)\b/g,
replace:function (portion) {
var a = document.createElement('a');
a.className = 'telephone';
a.href = 'tel:' + portion.text.replace(/\D/g, '');
a.textContent = portion.text;
return a;
}
});
var replaced = $("body").html().replace(/-1o9-2202/g,'The ALL new string');
$("body").html(replaced);
对于变量:
var replaced = $("body").html().replace(new RegExp("-1o9-2202","igm"),'The ALL new string');
$("body").html(replaced);
$("#elementID").html("another string");
http://api.jquery.com/html/
它们并不总是相同的id,可以是不同的类名或id名称。如果我只有1个班级名称或ID名称,那不是很难,但大多数时候都是随机的。
因此,您想在整个HTML树中搜索一个字符串,然后替换它?