如何使用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>

我想知道是否有办法删除 &lt;div&gt;&lt;a&gt; 标记之外的所有内容,在本例中为 (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 更改模式内的文本?

如何使用 JQuery 选择容器元素内的第一个 div 元素?

如何从另一个子 td 元素检查父 tr 元素内的 td 元素的值

如何使用 jquery 访问不同域中 iframe 内的 div 元素