为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用jQuery从父元素中删除文本(不删除内部元素)

如何使用jQuery从父元素中删除文本(不删除内部元素)

阿波罗的战车 2020-02-02 13:56:01
想象一下,我有以下类似的东西(从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中仅删除(仅文本)“第一”,“第二”和“第三”。
查看完整描述

3 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

如果要删除所有子文本节点,则可以使用.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级规范中找到)更安全。


查看完整回答
反对 回复 2020-02-02
  • 3 回答
  • 0 关注
  • 1025 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信