【问题标题】:How can I get only the first level element from an element if all it has is a tag如果元素只有一个标签,我如何才能从元素中获取第一级元素
【发布时间】:2017-04-28 03:21:33
【问题描述】:

如果一个元素只有一个标签,有没有办法只从一个元素中获取第一级元素?我有以下 html,只想从找到的“tr”的第一级获取所有“tr”标签。不是“tr”标签中的那些。

<tbody>
 <tr> // I want this
  <td>
  <td>
   <div>
    <table>
      <colgroup span="9">
        <tbody>
          <tr> // Don't want this
           <td>
 <tr> // I want this
  <td>
  <td>
   <div>
    <table>

等等

【问题讨论】:

  • tbody > tr 这将选择第一级 tr
  • /tbody/tr - 只有一个斜线的孩子
  • @lotfiolakehal tbody &gt; tr 将选择 all tr 元素,它们是 any tbody 元素的直接子元素。 OP 想要排除嵌套表。
  • @splash58 /tbody/tr 不是有效的 CSS 语法。
  • @lotfiolakehal 他在问题的标题中指出,他需要能够仅使用 HTML 标记来访问元素。因此,他不能“简单地”添加一个类。很多时候,CSS 设计师没有能力修改他们正在设计的 HTML。鉴于该问题被标记为“硒”,看来情况就是这样。

标签: html css xpath selenium-webdriver


【解决方案1】:

是的,但首先您需要为所有行设置所需的样式,然后将嵌套表的行重置为默认样式。

.table, td { border:1px solid black; }

/* First set the style you want, but set it on all rows. */
tr { background-color:yellow; }

/* Then reset the nested table's rows back to their default style. */
table table tr { background-color:white; }
<table>
 <tbody>
  <tr> 
   <td>test</td>
   <td>test</td>
   <td>
    <table>
      <tr>
        <td>test</td>
      </tr>
      <tr> 
        <td>test</td>
      </tr>
     </table>
   </td>
  </tr>
  <tr>
   <td>test</td>
   <td>test</td>
   <td>test</td>
  </tr>
<table>

【讨论】:

    【解决方案2】:

    我建议你使用类来选择元素。

    编辑:

    另一个帖子也有同样的问题。(Apply style to only first level of td tags)

    使用 .MyClass&gt;tbody&gt;tr&gt;td { border: solid 1px red; }

    【讨论】:

    • 然而,问题表明所有要做的就是标签结构。有时,CSS 设计人员无法更改 HTML。
    • 关于您的编辑:OP 声明他们只有 HTML 结构可以继续。您指向的解决方案需要将一个类添加到顶级表中,这对于 CSS 设计人员来说并不总是可行的。
    【解决方案3】:

    如果你使用 jQuery,你可以使用类似的东西来定位它:

    $("tbody > tr").html()
    

    这将选择紧跟在tbody 之后的tr

    要获得下一个,您需要寻找它的兄弟姐妹。

    【讨论】:

    • tr 元素上调用 .val() 似乎有点愚蠢,因为它是为了获取表单元素的值...
    • 通常不适合提供涉及未在问题中标记的技术的解决方案。
    • 此外,您的解决方案将找到作为 tbody 元素的子元素的每个 tr 元素,这不能解决 OP 问题。他想在查询中排除嵌套的tbody - 你不会这样做。
    猜你喜欢
    • 2017-03-13
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多