如何使用jQuery从元素后删除文本

时间:2012-06-21 02:16:09

标签: jquery

此演示代码循环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--;
}
​

http://jsfiddle.net/pHYHW/

6 个答案:

答案 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--;
}

jQuery afterText Plugin on github

答案 1 :(得分:2)

var i = 3;
while ( i ) {
    $("#i_1")[ 0 ].nextSibling.nodeValue = 'text';
    i--;
}

演示:http://jsfiddle.net/Ralt/pHYHW/7/

你去,享受。如果您愿意,也可以使用data代替nodeValue

顺便说一下,这是有效的,因为nextSiblingtextNode,因此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. 
}

Here is the Demo