2016-01-08 34 views
3

文本我有一些HTML,看起来像这样:删除不拥有自己的元素

<div class="field"> 
    <input type="text" name="name" id="sourcedidSource" value="SYSTEM">SYSTEM 
    <span class="someClass"></span> 
</div> 

我需要sourcedidSource后删除SYSTEM文本,同时保持一切完好无损。我试过$('.field').text().remove();,但也删除了inputspan元素。我该怎么办?

回答

3

它实际上是一个容易得多,而不jQuery的

var node = document.getElementById('sourcedidSource').nextSibling; 
node.parentNode.removeChild(node); 

或者时髦的jQuery与textnodes工作版本

$($('#sourcedidSource').get(0).nextSibling).remove(); 
+0

啊,简单的原始JavaScript派上用场。谢谢! – Cliff

0

而不是$('.field').text().remove();

$('#sourcedidSource').text('') OR $('#sourcedidSource').text().remove()

这将针对您的具体输入字段和文本内容设置为空字符串,''

+0

请注意,这将完全覆盖元素中的所有HTML。因为text()返回一个没有remove()方法的字符串,所以'$('#sourcedidSource').text()。remove()'会给你一个语法错误。 –

+0

是的,你是对的先生!但我认为问题'输入'中的HTML元素的唯一内容是OP想要删除的文本。你的答案虽然更好,但;-) – AdamJeffers

2

您可以使用contents()filter()来获取.fieldremove()中的textNode。试试这个:

$('.field').contents().filter(function() { 
    return this.nodeType == 3; 
}).remove(); 

Example fiddle