我想在不更改范围的情况下更改文本。 我尝试了这个,文本被更改,但跨度已被删除。
<div class="c1"> <h2> "here" <span class="span1">X</span></h2></div>
有没有办法在不使用jQuery对span内容进行任何更改的情况下更改文本。
答案 0 :(得分:4)
jsFiddle:https://jsfiddle.net/CanvasCode/y6p6xzfx/
$(function () {
$span = $('h2').find('span')
$('h2').text("Hello");
$('h2').append($span);
});
获取跨度的副本,更新h2文本,然后将跨度追加到h2标记。
忘记按c1
div类进行过滤。这是更新的代码
jsFiddle https://jsfiddle.net/CanvasCode/y6p6xzfx/1/
$(function () {
$div = $('.c1');
$h2 = $div.find('h2');
$span = $h2.find('span')
$h2.text("Hello");
$h2.append($span);
});
此外,您不需要存储所有元素。我这样做是为了让代码更清晰易读和理解。
答案 1 :(得分:3)
更新第一个nodeValue
的{{1}}。
querySelector()
- 获取dom对象firstChild
- 获取firstNode,在这种情况下我们可以获取textNode nodeValue
- 更新textNode内容
textNode
&#13;
document.querySelector('.c1 h2').firstChild.nodeValue = 'hi'
&#13;
更新或者在jQuery中使用 contents()
和 replaceWith()
<div class="c1">
<h2>here<span class="span1">X</span></h2>
</div>
&#13;
$('.c1 h2').contents().first().replaceWith('hi');
&#13;
答案 2 :(得分:0)
您可以通过再次将span
添加到h2
元素来实现此目的:
var $span = $("div.c1 span.span1");
$("div.c1 h2").text("New Text");
$("div.c1 h2").append($span);
答案 3 :(得分:-3)
解决方案:$('。span1')。text('ABC');