2013-11-15 36 views
1

我需要从html节点中删除文本,但保留内部HTML 任何知道如何做到这一点的人?使用jQuery/Javascript从html节点中删除文本

<td class="ms-list-addnew"> 
    <a class="ms-herocl" id="idHPNewDocument"><span>new document</span></a> 
    or drag files here 
</td> 

所需结果(删除 “或将文件拖到此处”):

<td class="ms-list-addnew"> 
    <a class="ms-herocl" id="idHPNewDocument"><span>new document</span></a> 
</td> 

回答

3

如果你想保持你所拥有的,这可以为你工作。否则,您可以添加一个带有ID的span标签并将其删除。

var text = $(".ms-list-addnew").html() 
text = text.replace("or drag files here",""); 
$(".ms-list-addnew").html(text); 
+0

这样做的问题是,如果有其他节点上的事件处理程序,这种方法会让你失去他们。 – ZekeDroid

+0

同意,@Vivin Paliath的答案在这方面更好。 – ElliotM

+0

是的,你的确很整齐。 Vivin没有解决的一个问题是如果你不能用标签替换浮动文本? DataTable的筛选条中的“Search:”字符串就是这种情况。 – ZekeDroid

1

试试这个,

Live Demo

$('.ms-list-addnew .ms-herocl')[0].nextSibling.nodeValue = '' 
3

有很多方法可以做到这一点。一种方法是把在另一个元素中的文本(比如,span),并使用.remove()

<td class="ms-list-addnew"> 
    <a class="ms-herocl" id="idHPNewDocument"><span>new document</span></a> 
    <span id="dragText">or drag files here</span> 
</td> 

然后:

jQuery("#dragText").remove(); 
1

使用

$('#idHPNewDocument')[0].nextSibling.nodeValue = null;