我试图找到解决方案来搜索DOM中包含的文本字符串“Tony”,并用文本字符串“Tiger”替换它。如何查找文本并使用jQuery替换
任何人都有任何见解或想法如何做到这一点?我猜它会采取每个语句加上一个替换函数,并可能包含?
感谢 杰克
我试图找到解决方案来搜索DOM中包含的文本字符串“Tony”,并用文本字符串“Tiger”替换它。如何查找文本并使用jQuery替换
任何人都有任何见解或想法如何做到这一点?我猜它会采取每个语句加上一个替换函数,并可能包含?
感谢 杰克
你可以使用这个搜索body元素的所有儿童和替换文本...
$('body').children().each(function(){$(this).text($(this).text().replace('Tony','Tiger'))});
它使用jQuery的。它也应该只改变元素和没有HTML格式的文本内容...
您也可以使用这种方法,它使用一个RegExp,并会得到所有嵌套的元素:
$('body').html($('body').html().replace(/Tony/gi,'tiger'));
这不起作用,因为'children()'不会递归搜索DOM - 它只会给你直接的孩子。 – 2010-12-15 23:14:43
它不工作在我的网页上:http://www.laithwaiteswine.com $('。container')。children()。each(function(){$(this).text($(this).text() .replace('Laithwaites','Tiger'))}); - 这是删除所有的DOM或打破它。 – jrutter 2010-12-16 00:04:08
@jrutter:不知道为什么没有看到你的代码发生在你身上。然而,我用另一个使用RegExp方法解决了我的解决方案---> $('body')。html($('body')。html()。replace(/ Tony/gi,'tiger') ); – exoboy 2010-12-16 00:18:11
页宽,你可以使用这样的事情:
var $body = $('body');
var html = $body.html();
var newHtml = html.replace('Tony', 'Tiger');
$body.html(newHtml);
或者,如果你有一个更具体的容器,使用jQuery选择子容器和做同样的事情。
无论哪种方式,这是一种霰弹枪的方法。它将更改可见文本和html元素属性中的字符串。如果字符串需要在某些位置被忽略,则可能需要更详细的方法。
这不是工作,整个页面重新加载。 – jrutter 2010-12-16 00:01:16
是否有可能将其与服务器端解决方案相结合?你可以用一个特殊的类来包装服务器端的每一个字,例如<span class="replaceme">texttoreplace</span>
。
仅在生成的类上运行javascript替换才会加快速度。
+1肯定比搜索DOM文本好多了。 – 2010-12-15 23:18:51
如果这是一种可能性,为什么他不替换服务器端的字符串呢?添加不必要的dom元素似乎过多 – ximi 2012-05-31 05:54:20
请详细说明。你对DOM中的_where_有任何想法吗?你是否想用'老虎'来替换'Tony'的出现?无论它出现在哪里? – 2010-12-15 22:29:15
你是否为那个html容器?或者直接取代所有 – kobe 2010-12-15 22:31:30
是的,我想用“Tiger”替换“Tony”的每一个出现位置 - 它所在的DOM所在的位置 - 可能必须在.container元素中。 – jrutter 2010-12-15 22:35:06