在不更改布局的情况下替换文本的解决方案(jQuery)
A solution to replace text without changing layout (jQuery)
如何在不更改周围标记的情况下替换文本。$("content").text("some new text")将删除周围的标记。
<div id="content" style="height: 100%; width: 100%; padding: px;">
<p><strong>I need to be replaced</strong>
</p></div>
<div id="content" style="height: 100%; width: 100%; padding: 5px;">
<p><em><strong>I need to be replaced</strong></em></p>
</div>
如果你知道你总是替换强标记中的文本,你可以这样做。否则,你可能需要创建某种业务规则来确定你要替换内容块中的哪个元素。
$("#content strong").text("some new text")
如果除了可能有一个结构之外,你对封闭标签一无所知,你可以写这样的东西:
$.each($('.content'), function(i, val) {
console.log($(val));
replaceText(val, 'This is the updated text');
});
function replaceText(element, text) {
if ($(element).children().size() == 0) {
$(element).text(text);
return;
}
replaceText($(element).children()[0], text);
}
这将查找当前对象的子对象,如果有子对象,则在第一个子对象上向下移动DOM树。现在,如果一个元素有多个子元素,而您不知道要替换哪个子元素,则必须做更多的工作来创建业务规则。
如果您知道要替换的部分或全部文本,也可以在CSS中使用内容选择器:
$('.content').find(':contains("I also need to be replaced")').text('Update text');
链接到jsFiddle
感谢您的解决方案,非常有用!
re:如果你知道要替换的部分或全部文本,你也可以在CSS中使用内容选择器:
关键是:)$("#content").text()==我们想要替换的内容,
您的解决方案效果良好。我终于做了这个:
var content = $("#content").text();
$("#content").html($("#content").html().replace(content,"new text"));
谢谢!
相关文章:
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- iPad虚拟键盘-哪一个-javasctript解决方案
- AJAX HTTP基本身份验证解决方案
- 使用SeleniumWebdriver将文本复制到文件时出现编译错误的解决方案
- 在Python中抓取javascript渲染的文本的最快解决方案
- 文本编辑工具栏解决方案 (js),具有低级自定义
- 调整优雅的文本大小调整解决方案的性能,实现流畅/响应式设计
- :包含不区分大小写的解决方案在替换文本以突出显示时不起作用
- 在不更改布局的情况下替换文本的解决方案(jQuery)
- Jquery/Javascript 解决方案,用于将 wiki 文本转换为 HTML,反之亦然
- 需要解决方案在 NicEdit 将 HTML 文本插入实例
- 将文本框中的信息发布到其他解决方案的另一个文本框中
- 具有重叠文本范围的解决方案
- 通过客户端脚本更改时在服务器端访问只读文本框值的解决方案
- 快速输入文本框的解决方案
- 什么是最终用户可编辑的文本替换占位符的简单解决方案?
- Javascript:用于选择焦点文本框内所有文本的跨浏览器解决方案
- jquery乘以2个文本框,然后显示解决方案
- 我需要使用Javascript选择Javascript DOM文本节点的解决方案
- PHP 随机文本 - 是否有更好、更干净或更少服务器密集型的解决方案