jquery - 紧随其后的子元素的 CSS 选择器

标签 jquery css

两个简单的 HTML 示例:

<p>
  <i>Some text</i>
</p>

<p>Here's a paragraph that has <i>some text</i>, and then some more</p>

使用 CSS 时,这会选择 <i>在这两种情况下都是:

p > i {
  border: 1px solid red;
}

>以每个 <i> 为目标在每个 <p> 内.

我正在寻找的是一种只针对 <i> 的方法紧跟在 <p> 之后的,换句话说,目标是 <i>在第一个例子中但不是在第二个例子中。在某种程度上 +选择相邻的 sibling ,但对于相邻的 child 。这可能吗?

我查看了 jQuery 的 only-child选择器,但这也针对 <i>在这两个示例中都是,因为文本(“这是一段......”)不被视为子项。

最佳答案

您不能使用 CSS 完成此工作,但使用 javascript/jquery 您可以选择目标元素,如底部所示。

选择所有 i 元素并使用 .filter() 过滤所选元素。在过滤器回调中使用 previousSibling 检查 i 的先前文本属性(property)。

$("p > i").filter(function(){
  return this.previousSibling.nodeValue.trim() == "";
}).css("border", "1px solid red");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
  <i>Some text</i>
</p>
<p>Here's a paragraph that has <i>some text</i>, and then some more</p>
<p>
  <i>Some text</i>
</p>
<p>text <i>some text</i>, text</p>

关于jquery - 紧随其后的子元素的 CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52989587/

相关文章:

javascript - JQuery:如何制作具有 flex 效果的 3D Joystick 图像?

javascript - video.js:适合缓冲区预加载和响应式全屏渲染吗?

html - 跳转页面超链接不起作用。

javascript - 使用 Jquery 创建的幻灯片在旋转 4 次后停止工作

javascript - Ajax 调用 API 返回错误 HTTP/1.1 405 Method Not Allowed

css - 如何在 css 中的背景图像和元素之间添加空间?

javascript - Rails 基于媒体查询加载部分

javascript - Jquery 可排序功能在 WordPress 中不起作用

javascript - 显示/隐藏 SQL 数据库中的动态 ID

javascript - 带有示例的基本 Bootstrap 提前输入