我有一个脚本,我想在其中的任何地方回忆文本,用户可以看到,如下所示:
$("body").html($("body").html().replace(/replaced word/g,'HELLO'));这行得通,但效果很好。每当“替换单词”在标签中时,比如href、span、div或任何东西,它都会抛出页面上的所有格式。在不影响页面功能的情况下,对于页面中的每一次发生,实现替换文本的最佳方法是什么,不管它在什么元素中?谢谢
编辑:多亏了talsibony和每个人的帮助,我有了一个关于如何在不影响html标记的子元素中替换单词的答案。我希望用字体颜色或其他样式选项替换,如下所示:
$(element).html($(element).selectorText().replace(/thisi/g,'<abbr title="hover title"><font color="#10a9cf">HELLO</font></abbr>'));奇怪的是,这段代码在小提琴中工作,但是当我将它包含在我正在处理的google扩展中时,页面加载是空的。当我将它切换回selectortext时,它会加载,但我看到了替换中的html标记。
我不明白为什么,因为一个正确的替换不工作,也不让页面加载!
$(element).html($(element).selectorText().replace(/thisi/g,'HELLO'));在控制台中,我得到以下错误:无法读取空的“替换”属性
我在这里错过了什么?再次感谢!
发布于 2015-06-22 04:53:51
我认为您必须在每个元素中单独使用我在这里重写的jquery小插件,这是代码,也是
html
<div id="parent">
thisi sthe fpcd
<p>p</p>
</div>插件,以查找没有子元素的选择器文本的内容
$.fn.selectorText = function(text) {
var str = '';
this.contents().each(function() {
if (this.nodeType === 3) {
if(text){
this.textContent = text;
return false;
}else{
str += this.textContent || this.innerText || '';
}
}
});
return str;
};将其用于您的案例
allowReplaceTags = ['DIV'];
$('body').find('*').each(function (i, element) {
if ($.inArray(allowReplaceTags,element.tagName)){
// do replace
$(element).selectorText($(element).selectorText().replace(/thisi/g,'HELO'));
}
});发布于 2015-06-22 04:39:15
$("body").html($("body").text().replace(/replaced单词/g,‘HELLO’);
https://stackoverflow.com/questions/30972135
复制相似问题