3

我想将此 CSS 选择器与 Selenium webdriver 一起使用

#coordinatonTable .odd:not(:has(.dataTables_empty))

我收到“指定了无效或非法的字符串”错误。我尝试了 w3schools 的 jquery 选择器测试。此服务还向我显示“非法选择器”。如果我缩短选择器它的工作原理

#short .odd:not(:has(.dataTables_empty))
#coordinatonTable .odd:not(:has(.short))
#short .odd:not(:has(.short))

看起来选择器太长了。但这不可能是真的。有什么建议吗?

html部分的结构是这样的:

id="coordinatonTable"
  class="odd"
    class="dataTables_empty"
  class="odd"
    class="something"
  class="odd"
    class="somethingelse"
  ...

如果他们没有空孩子,我想得到所有奇怪的元素。

4

3 回答 3

4

:has不是有效的 CSS 选择器。它是一个 jQuery 扩展,在任何 CSS 文件中都是无效的。

我不知道为什么您的其他示例没有导致错误。他们为我做。

于 2013-06-07T13:34:07.153 回答
2

:has是一个 jQuery 选择器——它不是 CSS3 规范的一部分。如果您只是检查一个类的不存在,请执行以下操作:

#coordinatonTable .odd:not(.dataTables_empty)

于 2013-06-07T13:33:44.653 回答
1

您正在寻找的是一个令人垂涎的(但不可用)父选择器。就像其他人提到的那样,:has它只是 jQuery 并且会被 CSS 拒绝。目前还没有办法使用纯 CSS 根据元素包含的子元素来更改元素的样式。如果您有权访问执行循环并创建元素的后端,则可能首先检查是否有任何子项,然后添加一个“空”类和“奇​​数”类。

例子:

id="coordinatonTable"
    class="odd empty"
        class="dataTables_empty"
    class="odd"
        class="something"
    class="odd"
        class="somethingelse"
    ...

或者,如果这不可能,您可以在 DOM 加载后使用 javascript 循环并将空类添加到父元素。无论哪种方式,您都需要在父元素上获取一个类,以便您可以执行以下操作:

.odd.empty {
    /* Special CSS for empty cell */
}
于 2013-06-07T13:53:53.113 回答