【问题标题】:Remove contents of this parent删除此父项的内容
【发布时间】:2013-03-08 01:16:16
【问题描述】:

我有这个 HTML:

    <div id="hi">
    <span style="border:1px solid red;">This span should stay</span>
    <br />
    this should be removed
</div>

我想删除 div#hi 中不是 span 的所有内容(*):

这似乎不起作用:

 $('#hi').not('span').remove();

它消除了一切。我还能尝试什么?

JsFiddle example

【问题讨论】:

    标签: jquery removeall


    【解决方案1】:
    $('#hi').contents().filter(function(){
         return this.localName !== 'span';
    }).remove();
    

    http://jsfiddle.net/TUuQ9/

    【讨论】:

    • @undefined 为什么它不能与 span 一起使用,但可以与 localName 一起使用
    • 你可能知道为什么这不起作用$('span').parent()JsFiddle
    • @sasi 因为在 OP 代码中,not 过滤选择的元素是 #hi 元素而不是它的内容,jQuery 选择器也不选择 textNodes,这就是使用 .contents() 的原因。跨度>
    • @Youss 嗨,localName 是 DOM 元素对象的一个​​属性,它以小写形式返回 tagName 的名称,如果你想使用 ID 和类 localName 不是你想要的,请提供一个演示,让我知道应该选择什么。
    • @Youss 我更新了你的小提琴。 jsfiddle.net/TUuQ9/2,关于IE8而不是localName使用tagName但是tagName的名字应该是大写的,即return this.tagName !== 'SPAN';
    【解决方案2】:

    你可以用.clone()试试这个:

    $cln = $('#hi').find('span').clone();
    $('#hi').html($cln);
    

    FIDDLE

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2018-04-10
      • 1970-01-01
      相关资源
      最近更新 更多