我在尝试查找和替换文本。
唯一的问题是找不到没有附加ID元素的文本字符串。否则,这将很容易。
我正在尝试这样做:
$("*").each(function () {
$(this).html(this.html().replace('Original Text','New Text'));
});
效果不太好。
有人遇到过这种情况吗?
另外,如果我有几个单词或短语需要查找和替换,那么这会对用户浏览器的速度/处理能力产生什么影响?它是一个内存占用大的东西吗?
$("*").contents().each(function() {
if(this.nodeType == 3)
this.nodeValue = this.nodeValue.replace("old", "new");
});
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....
我只想找到并替换“Price:”这个词,可能用“Cost:”代替。
但是正如我所提到的,那些数据还没有被加载。
这是我必须接受的限制吗?
$('body').html($('body').html().replace('Original Text','New Text'));
您需要使用:contains()
选择器。http://api.jquery.com/contains-selector/
$("*:contains('Original Text')").each(...);
$("*").each(function () {
if ($(this).children().length == 0){
$(this).html($(this).html().replace(/Old String/g, "New String"));
}});