2010-04-26 32 views

回答

5

这里是我的想法:

function removeText(element){ 
    var newElement = $('<' + element[0].nodeName + '/>'); 
    element.children().each(function(){ 
     newElement.append(this); 
    }); 
    element.replaceWith(newElement); 
} 
+3

function stripText(element){ \t \t var item = element [0]; \t \t var newElement = $('<'+ item.nodeName +'/>'); \t \t为(I = 0; I Mandrake 2012-05-31 21:01:45

+0

+1 Mandrake的解决方案解决了元素属性被删除的问题。 – 2013-04-10 01:16:42

-8
$('#someElement').text(''); 
+1

是U确定吗?它也消除了孩子们。也许是因为我用jquery 1.2.3 – aneuryzm 2010-04-26 19:46:47

+1

这个删除了1.4.2中的所有孩子以及 – Rudism 2010-04-26 20:52:00

+0

Rudism是正确的。它可以消除包括孩子在内的所有元素。 – Davis 2013-10-02 15:55:20

-4

你不能做that.Unless它是由一个元素包裹着。

6

这个工作对我来说:

$(elem).html($(elem).html().replace($(elem).text(),'')); 

此设置没有文字内容的HTML内容,这意味着ELEM内部的任何HTML标记将被继续使用,无需变化。

前:

<div>Hello<input type="text" name="username" value="world!"/></div> 

后:

<div><input type="text" name="username" value="world!"/></div> 

再见

+2

请添加一些解释。 – 2012-11-21 22:20:08

+1

这里有一些问题:1)使用像replace这样的字符串函数编辑HTML会破坏标记(例如,如果文本是''或'''),2)与文本匹配的任何内容都被替换(例如,如果文本是'用户',那么名称属性将改变),3)如果文本分散在孩子之间将不起作用(例如“

Hello
World
”) – Warbo 2014-06-20 12:51:58

39

最佳轻松地解决某些DIV删除所有文字元素是

$("#firstDiv").contents().filter(function(){ 
    return (this.nodeType == 3); 
}).remove(); 
+3

优秀的解决方案。适用于我。 – jwinn 2014-02-13 02:16:26