排除具有特定子项的元素[重复项]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排除具有特定子项的元素[重复项]相关的知识,希望对你有一定的参考价值。

在我(Tumblr)网站上的帖子上,我有很多段落,其中一些放在大括号内。在出现块引用的位置,其上方的段落通常是第一段(尽管多个块引用将意味着它们的多个)通常具有单个链接子项,而内部没有其他内容。例如:

<p> <a class="foo"> Link name </a> </p>
<blockquote>
    <p> If there were multiple nested blockquotes, each one would have a <p><a class="foo"> line atop each new blockquote. </p>
    <p> Some more text </p>
</blockquote>
<p> Some more text. </p>
<p> Even more text. </p>

我如何为所有段落设置样式(添加底部填充),除了那些具有单链接子项的段落(我想与blockquote齐平放置-无/最小填充或边距)?大概“:not()”将起作用,但是我还没有弄清楚在括号内使用的正确选择器。

答案

使用:has():not() jquery中的CSS伪类选择器可以实现您想要的。 :has()选择器cannot在CSS样式表中使用。

$(document).ready(function() {
  var pElements = $(':not(p:has(> a))');
  pElements.css('padding-bottom', '20px');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<p> <a class="foo"> Link name </a> </p>
<blockquote>
  <p> Some text </p>
  <p> Some more text </p>
</blockquote>
<p> Some more text. </p>
<p> Even more text. </p>
另一答案

要为属于<p>元素的后代的所有<blockquote>元素(不仅是直接后代)设置样式,可以使用如下CSS选择器。

blockquote p {
  color: red;
}
<p>Selector doesn't apply to me.</p>
<blockquote>
  <p>Selector applies to me.</p>
  <p>And me.</p>
  <footer>
    <p>And also me.</p>
  </footer>
</blockquote>

以上是关于排除具有特定子项的元素[重复项]的主要内容,如果未能解决你的问题,请参考以下文章

如何排除从其他子项目引入的依赖项?

仅当父元素具有特定类时才为列表项元素设置样式[重复]

降低依赖重复的两项优化

检查firebase子项是不是具有特定值[重复]

PHP - 在php中删除具有特定属性的子项[重复]

使用 JQuery 选择具有特定类的特定行的子项