选择兄弟元素的子元素

Posted

技术标签:

【中文标题】选择兄弟元素的子元素【英文标题】:Select child of sibling element 【发布时间】:2018-12-27 08:06:55 【问题描述】:

我有以下 html DOM。我的目标是获取“错误”文本。

<div class = "row">
   <div class ="col-sm-4">
      <input id = "firstName" type = "text"> John
      <div class = "mh-15">
         <div class = "text-danger">Error</div>
      </div>
   </div>
</div>

由于 class= "text-danger" 被重复了很多次,我的目标是通过从 id = "firstName" 开始并通过使用类似 xpath 祖先的东西来获取“错误”文本。我该怎么做?谢谢!

【问题讨论】:

input 节点是 &lt;div class = "mh-15"&gt; 的兄弟节点吗? 【参考方案1】:

X 路径:

//input[@id='firstName']/following-sibling::div[2]

注意&lt;div class = "mh-15"&gt;应该是输入框的兄弟。

【讨论】:

刚刚更新:更安全的定位器://input[@id='firstName']/following-sibling::*//div[@class='text-danger'] @Infern0 : text-danger 类正在改变,如 OP 所述。我不认为这将是一个好的选择。 我已经阅读了以下声明:'As class= "text-danger" 重复了很多次',所以我的建议是相关的。 此 XPath 不能用作目标 div 不是第二个兄弟div,而是第一个兄弟div的子。检查@ewwink 答案 感谢您的快速回复。你们都提供了非常有帮助的答案。对我有用的是@infern0 的定位器,尽管它们都非常相似。【参考方案2】:

ancestor 用于选择父元素,class="text-danger"id="firstName" 的元素之后,您必须使用followingfollowing-sibling 选择它

//input[@id="firstName"]/following-sibling::div/div
# or
//input[@id="firstName"]/following::div/div

【讨论】:

以上是关于选择兄弟元素的子元素的主要内容,如果未能解决你的问题,请参考以下文章

使用 JQuery 的 find 方法,如何根据“foo”的子元素的内容选择某个 HTML 元素“foo”的兄弟?

使用元素树在 xml 中的子元素之后附加兄弟元素

stylus选中hover元素的兄弟元素下的子元素

jquery-根据现有结果集得到另一个结果集(后代祖先或兄弟元素)

如果值匹配,XSLT 会更改兄弟元素的子元素值

伪类选择符