首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery更改内部文本,但保留html。

JQuery更改内部文本,但保留html。
EN

Stack Overflow用户
提问于 2011-03-08 13:06:49
回答 12查看 101.2K关注 0票数 73

我想更改HTML元素的文本,但是用jQuery保留其余的内部html。

例如:

代码语言:javascript
复制
<a href="link.html">Some text <img src="image.jpg" /></a> 

将“某些文本”改为“其他文本”,其结果应该如下:

代码语言:javascript
复制
<a href="link.html">Other text <img src="image.jpg" /></a> 

编辑:我的当前解决方案如下:

代码语言:javascript
复制
var aElem = $('a');
var children = aElem.children();

aElem.text("NEW TEXT");
aElem.append(children); 

但一定有更优雅的方法来做这件事。

EN

回答 12

Stack Overflow用户

发布于 2011-03-08 13:20:41

由于您无法修改链接,所以可以选择使用replace

代码语言:javascript
复制
$("a").html($("a").html().replace("Some text", "Other text"));

小提琴上的示例。

票数 37
EN

Stack Overflow用户

发布于 2011-03-08 13:09:41

包装要在跨度内更改的文本。

代码语言:javascript
复制
<a href="link.html"><span>Some text</span> <img src="image.jpg" /></a> 

$('a span').html( 'new text' );
票数 22
EN

Stack Overflow用户

发布于 2014-12-05 10:03:23

另一种方法是按以下方式使用contents()方法:

给定的

代码语言:javascript
复制
<a href="link.html">Some text <img src="image.jpg" /></a>

您可以用'Some text'替换jQuery

代码语言:javascript
复制
var text = $('a').contents().first()[0].textContent;
$('a').contents().first()[0].textContent = text.replace("Some text", "Other text");

jsFiddle示例这里

contents()的想法是受问题的启发,由用户charlietfl回答。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5232862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档