【发布时间】:2012-07-30 09:41:20
【问题描述】:
我正在寻找Nokogiri 中的伪类:has。
它应该像 jQuery 的 has selector 一样工作。
例如:
<li><h1><a href="dfd">ex1</a></h1><span class="string">sdfsdf</span></li>
<li><h1><a href="dsfsdf">ex2</a></h1><span class="string"></span></li>
<li><h1><a href="sdfd">ex3</a></h1></li>
CSS 选择器应该只返回第一个链接,即具有非空span.string 兄弟的链接。
在 jQuery 中这个选择器效果很好:
$('li:has(span.string:not(:empty))>h1>a')
但不是在 Nokogiri:
Nokogiri::HTML(html_source).css('li:has(span.string:not(:empty))>h1>a')
:not 和 :empty 效果很好,但不是 :has。
- Nokogiri 中是否有任何关于 CSS 选择器的文档?
- 也许有人可以编写一个自定义的
:has伪类?这是example 如何编写:regexp选择器。 - 我可以选择使用 XPath。如何为
li:has(span.string:not(:empty))>h1>a编写 XPath?
【问题讨论】:
-
:haspseudo 是一个 jQuery 扩展,所以我猜 Nokogiri 不支持它,因为它不是任何标准的一部分。 -
好的,所以我的最后 3 个问题是合适的
-
鉴于您提供的 HTML,
//li[span[@class="string"][count(node()) > 0]]/h1/a会返回包含ex1内容的节点(第一个a)。 -
@MisterJack,nokogiri 支持
:has选择器,但它无法正常工作,请查看my answer below。感谢 xpath 示例:)
标签: jquery css ruby-on-rails ruby nokogiri