我想更改HTML元素的文本,但使用jQuery保留内部html的其余部分.
例如:
<a href="link.html">Some text <img src="image.jpg" /></a>
Run Code Online (Sandbox Code Playgroud)
将"Some text"替换为"Other text",结果应如下所示:
<a href="link.html">Other text <img src="image.jpg" /></a>
Run Code Online (Sandbox Code Playgroud)
编辑:我目前的解决方案如下:
var aElem = $('a');
var children = aElem.children();
aElem.text("NEW TEXT");
aElem.append(children);
Run Code Online (Sandbox Code Playgroud)
但必须有一些更优雅的方式来做到这一点.
Bra*_*one 34
这似乎工作得很好.
<html>
<head>
</head>
<body>
<a href="link.html">Some text <img src="img.jpg" /></a>
</body>
</html>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
var $link = $('a');
var $img = $link.find('img');
$link.html('New Text');
$link.append($img);
});
</script>
Run Code Online (Sandbox Code Playgroud)
Mar*_*man 32
由于您无法修改链接,因此只需使用选项即可 replace
$("a").html($("a").html().replace("Some text", "Other text"));
Run Code Online (Sandbox Code Playgroud)
关于jsfiddle的例子.
meo*_*ouw 20
在跨度中包装要更改的文本
<a href="link.html"><span>Some text</span> <img src="image.jpg" /></a>
$('a span').html( 'new text' );
Run Code Online (Sandbox Code Playgroud)
And*_*ong 11
我的解决方案,虽然有点晚.
$('a').each(function() {
var contents = $(this).contents();
if (contents.length > 0) {
if (contents.get(0).nodeType == Node.TEXT_NODE) {
$(this).html('NEW TEXT').append(contents.slice(1));
}
}
});
Run Code Online (Sandbox Code Playgroud)
一些说明:
contents()包括文本节点,不像children().var contents = ...否则其余元素一旦被替换就会永久丢失$(this).html('NEW TEXT').length检查是可选的,但建议使用.nodeType检查是可选的,但建议使用.jim*_*rin 10
另一种方法是使用contents()如下方法:
特定
<a href="link.html">Some text <img src="image.jpg" /></a>
Run Code Online (Sandbox Code Playgroud)
你可以'Some text'用jQuery 替换
var text = $('a').contents().first()[0].textContent;
$('a').contents().first()[0].textContent = text.replace("Some text", "Other text");
Run Code Online (Sandbox Code Playgroud)
这里是 jsFiddle的例子.
这个想法contents()受到了这个问题的启发,用户charlietfl回答道.
小智 7
您可以通过.contents()进行更改
$('.yourElement').contents()[0].data = 'New Data';
Run Code Online (Sandbox Code Playgroud)
在您的情况下,“ [0] .data”是您的文本数据
| 归档时间: |
|
| 查看次数: |
82853 次 |
| 最近记录: |