繁体   English   中英

如何删除具有特定子项的jQuery中的元素?

[英]How to delete an element in jQuery with a specific child?

HTML:

<p><br style="clear:both;"></p>

我正在为项目使用Wikipedia API,并且正在清理Wikipedia的原始HTML输出,并且一直在努力解决此问题。 如何使用jQuery使用.remove();从DOM中删除此特定<p>元素.remove(); 我只希望删除其中具有<br style="clear:both;"><p>元素。

提前致谢! 我一直在努力解决这个问题。

因此,您要删除具有给定样式属性的所有直接包含<br>元素吗?

$('br[style="clear:both;"]').parent().remove();

这是相当保守的,因为它仅匹配您描述的形式的br标签-尽管通过在parent调用中插入p选择器可能更加保守。 但是,它也非常保守,可能不会在此标记上引起小的变化,因此请注意。

假设孩子本身是br ,那么代码将是-

$('p>br').closest('p').remove();

或使用

$('p>br[style="clear:both;"]').closest('p').remove();

或使用父函数

$('br[style="clear:both;"]').parent('p').remove(); 

但是不要

$('br[style="clear:both;"]').parent().remove(); // Don't use this

因为可能有很多br可能在dom的父不是p

尝试:

$('p:has(br[style="clear:both;"])').remove();

JSBin演示

正如Matchu指出的那样,要小心,因为这会删除内部带有<br style="clear:both;"> <p>元素,因此在某些特定情况下(如果<p>内还有其他内容),它可能会删除比您更多的元素期望...

$('p').filter(function(i) {
    return $(this).children('br').css('clear') == 'both';
}).remove();

执行任务的更安全的方法-

$('p').each(function(){
    if($(this).children().length === $(this).children('br').length)
      $(this).remove();
});
$('p').each(function(){
    if($(this).children('br').length == 1) {
        $(this).remove();
    }
});

这对我有用。 似乎“很清楚:两者都”; 是由浏览器生成的。 感谢您的所有想法和建议,以便我能解决!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM