我需要使用Javascript修改以下HTML,
<div id="1">
some text
<div id="2"></div>
</div>
我尝试过使用$('#1').text('new text');
但是,这无意中删除了<div id="2">
如何在不更改周围元素的情况下更改some text
?
答案 0 :(得分:10)
答案 1 :(得分:1)
尝试以下
<div id="1">
<span id='myspan'>some text</span>
<div id="2"></div>
</div>
然后使用;
$('#myspan').text('new text');
答案 2 :(得分:0)
如果合理,请执行以下操作:
<div id="1">
<span id="edit">some text</span>
<div id="2"></div>
</div>
然后,您可以像这样编辑文本:
$('#edit').text('new text');
基本上,您将要编辑的文本放在带有ID的自己的元素中。请记住,您可以使用任何类型的元素,您不必专门使用span
。您可以将其更改为div
或p
,但您仍会获得相同的结果。
答案 3 :(得分:0)
顺便说一句,使用带数字的元素作为元素是不好的做法。
如果您不想更改元素的样式,可以添加跨度。 所以在你的情况下你会做这样的事情(我把数字删除为ids):
<!-- HTML -->
<div id="text-container">
<span id="some-text">some text</span>
<div id="something-else"></div>
</div>
在你的JavaScript中:
//JavaScript
$('#some-text').text('new text');
答案 4 :(得分:0)
最佳解决方案是将节点类型检查为Node.TEXT_NODE
,nodeValue
不为空:
$('#1')
.contents()
.filter(function() {
return this.nodeType === Node.TEXT_NODE && this.nodeValue && this.nodeValue.trim();
})
.replaceWith("new text");
答案 5 :(得分:-1)
我的解决方案可以替代他人:
var text_to_keep = $('#2').text();
$('#1').text('new text').append('<div id="2">' + text_to_keep + '</div>');
P.S。我不认为id
以数字开头是有效的。