此演示代码循环3次,每次都附加文本。 我需要的是文本不会被附加但是被替换,因此在添加新文本之前应该删除先前附加的文本。 我尝试了很多东西,没有用。
编辑:您无法在跨度后添加额外标记!
<div>
<span id="i_1">this is </span>
</div>
var i = 3;
while(i>0)
{
//// how to remove the text added on the previous iteration?
$("#i_1").after('text');
i--;
}
答案 0 :(得分:3)
小蛋糕,这就是 jQuery afterText Plugin 的用途。
实施例/ Demo:
<div>
<span id="i_1">this is </span>
</div>
var i = 3;
while (i)
{
$("#i_1").afterText('text');
i--;
}
答案 1 :(得分:2)
var i = 3;
while ( i ) {
$("#i_1")[ 0 ].nextSibling.nodeValue = 'text';
i--;
}
演示:http://jsfiddle.net/Ralt/pHYHW/7/
你去,享受。如果您愿意,也可以使用data
代替nodeValue
。
顺便说一下,这是有效的,因为nextSibling
是textNode
,因此nodeValue
属性可用。
答案 2 :(得分:0)
不是在文本后面放置文本,而是修改HTML以包含一个包含文本的元素:
<span id="i_1">this is </span> <span id="value"></span>
只需设置另一个元素的文本:
for (var i = 3; i > 0; i--) {
$("#value").text('text');
}
答案 3 :(得分:0)
这有效:
var i = 3;
var old_text = $('#i_1').html();
while(i>0)
{
$("#i_1").html(old_text + 'text');
i--;
}
DEMO at:http://jsfiddle.net/2DcXe/
答案 4 :(得分:0)
我不确定这是不是你想要的,但试试这个:
HTML
<div>
<span id="i_1">this is </span><span id="i_2"></span>
</div>
的Javascript
var i = 3;
while(i>0)
{
$("#i_2").html('text');
i--;
}
答案 5 :(得分:0)
嗯,这不是jQuery,但我会这样做......
var ele = document.getElementById('i_1'); // get the element
var tn = ele.nextSibling, // get it's next sibling (picks up text nodes)
mode = 'textContent' in ele ? 'textContent' : 'innerText'; // ( ie is smelly )
for (var i = 3; i > 0; i--) {
tn[mode] = "Text"; // change the text content.
}