如何使用jQuery删除元素内的文本?
Posted
技术标签:
【中文标题】如何使用jQuery删除元素内的文本?【英文标题】:How to remove text inside an element with jQuery? 【发布时间】:2011-10-05 03:34:37 【问题描述】:我有一个脚本可以创建一个具有如下结构的项目列表:
<li>
<div>Some stuff</div>
<a href="http://www.mysite.com/">New Item</a>
(1 vote)
</li>
我想知道是否有办法删除 <div>
和 <a>
标记之外的所有内容,在本例中为 (1 vote) 字符串,使用 jQuery 或常规 javascript。
提前致谢!
【问题讨论】:
这里有你想要的一切:***.com/questions/298750/… 【参考方案1】:$('li').not('div,a').text('')
试试这个,未经测试
编辑
$('li').contents().filter(function() return !(this.tagName == 'DIV'
|| this.tagName == 'A');).remove();
【讨论】:
不,它不起作用:sandbox.phpcode.eu/g/-247fd6d2e7667cb8732e56d5043f96db.php 不走运 :( 确实有道理【参考方案2】:这应该可行。
$("li").contents().filter(function() return this.nodeType != 1; ).remove();
或通过明确指定文本节点
$("li").contents().filter(function() return this.nodeType == 3; ).remove();
看到这个fiddle。
【讨论】:
谢谢!我最终使用了$('ul li').contents().filter(function() return this.nodeType == Node.TEXT_NODE; ).remove();
【参考方案3】:
$('li').html($(this).children())
你可以试试这个,应该可以的。干净简单。
【讨论】:
有趣的想法,但 html 只需要一个字符串。你可以这样做.empty().append(children)
,但你必须先存储孩子们才能这样做以上是关于如何使用jQuery删除元素内的文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jQuery 禁用 div 或 table 中的所有元素
如何使用 JQuery 选择容器元素内的第一个 div 元素?