jQuery:如何删除文本但不删除子元素

时间:2010-04-26 16:40:47

标签: jquery

我可以只使用jQuery删除节点中的文本而不删除子元素吗?

感谢

6 个答案:

答案 0 :(得分:52)

从某些div删除所有文本元素的最佳和简单的解决方案是

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

答案 1 :(得分:8)

这对我有用:

$(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 :(得分:7)

这是我的想法:

function removeText(element){
  var newElement = $('<' + element[0].nodeName + '/>');
  for(i=0; i < item.attributes.length; i++) {
    newElement.attr(item.attributes[i].name, item.attributes[i].value);
  } 
  element.children().each(function(){
    newElement.append(this);
  });
  element.replaceWith(newElement);
}

答案 3 :(得分:0)

对于我来说,更容易在HTML中为它们全部设置一个类并在jQuery中使用empty()方法。

答案 4 :(得分:-4)

你不能这样做。除非被一个元素包裹。

答案 5 :(得分:-9)

$('#someElement').text('');