如何使用jquery从父元素中删除文本(不删除内部元素)
How to remove text (without removing inner elements) from a parent element using jquery
想象一下,我有如下内容(修改自http://viralpatel.net/blogs/jquery-get-text-element-without-child-element/)
<div id="foo">
first
<div id="bar1">
jumps over a lazy dog!
</div>
second
<div id="bar2">
another jumps over a lazy dog!
</div>
third
</div>
如何在不影响任何子元素的情况下,仅从DOM中删除(仅文本)"first"、"second"answers"third"。
如果要删除所有子文本节点,可以使用.contents()
,然后使用.filter()
将匹配集减少为仅文本节点:
$("#foo").contents().filter(function () {
return this.nodeType === 3;
}).remove();
下面是一个工作示例。
注意:这将保留子元素上的任何现有事件处理程序,而使用.html()
进行回答是不可行的(因为这些元素是从DOM中删除并添加回的)。
注意2:一些链接问题的答案显示的代码与我在这里的答案中的代码相似,但它们使用了nodeType
常量(例如return this.nodeType === Node.TEXT_NODE
)。这是一种糟糕的做法,因为版本9以下的IE不实现Node
属性。使用整数更安全(可以在DOM级别2规范中找到)。
这里有一个非jQuery版本,它可以在所有主流浏览器中工作,回到IE 5,只是为了展示没有jQuery的生活是多么的不安全。
演示:http://jsfiddle.net/timdown/aHW9J/
代码:
var el = document.getElementById("foo"), child = el.firstChild, nextChild;
while (child) {
nextChild = child.nextSibling;
if (child.nodeType == 3) {
el.removeChild(child);
}
child = nextChild;
}
试试这个:
$("#foo").html($("#foo").find("div"));
演示:http://jsfiddle.net/PXxC4/
您可以使用它。
$("#foo").html($("#foo").children());
相关文章:
- 从组件状态的数组中删除元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 正则表达式条件来删除元素
- 使用javascript删除元素时出现的问题
- 当会话存储阵列中存在大量元素时,如何从中删除元素
- 从角度数组中删除元素
- AngularJs localStorage在循环中删除元素
- 在使用jquery插入之前删除元素
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 更新分组条形图(转换或删除元素组)
- 向下滚动后如何用同一类逐个删除元素
- 如何防止 jQuery 事件在删除元素时冒泡
- 从jQuery对象中删除元素
- 如何删除元素的结束标记,添加一些文本,然后重新添加标记
- 从画布中删除元素
- 如何解析html以删除元素并只返回其位置的标题
- 使用 V8 从密集数组中删除元素的最佳方法是什么
- 如何使用jquery删除元素
- 根据成员属性从数组中删除元素
- 从中删除元素'的父元素,并将其附加到其他元素