需要一个 javascript 或 jquery 库将 xpath 转换为 jquery 中可选的 CSS3 格式
-
22-07-2019 - |
题
我怎样才能像这样转换xpath
/html/body/div[3]/ul/li[1]/a[5]
html > body > div[3] > ul > li[1] > a[5]
我相信,CSS3 选择器不支持索引......那么如何处理这个问题?
解决方案
如果您发现这种嘶嘶声/ jQuery的不能申请您的CSS3选择它可能是最好使用 XPath的插件这是jQuery的原始版本的一部分(然后删除,因为很少有人真正使用它)。
在浏览器XPath实现趋于多比CSS发动机更快。还具有JS解析&转换XPath表达式为CSS3然后具有的jQuery Munge时间即弄成浏览器可以实现(通常CSS2.1选择与位JS援助的)将是的多强>不是执行慢直接的XPath在浏览器中。
不仅如此,但有些事情的XPath能做到这一点的CSS不能。例如:点击
//h3[class="blog-title"]/../../div[class="blog-entry"]//input[fn:floor(value) > 3]
结果
其本身并不是对CSS过于复杂的用于XPath来执行,但不可能 - 移动备份DOM和执行功能为不能(据我所知)被尚未这样做,即使在CSS3表达式的一部分
其他提示
硒1的CSS定位引擎从CSSQuery移动到嘶嘶声,jQuery的CSS选择库。 所以,你可以转换
div[3]/ul/li[1]/a[5]
到
css=div:nth(3)>ul>li:nth(1)>a:nth(5)
和
//h3[class="blog-title"]/../../div[class="blog-entry"]//input[@value=3]
可以被转化为
css=h3.blog-title:parent(div.blog-entry) input[value=3]
然而//input[@value>3]
可以是不可能的或者是棘手的
欲了解更多信息,请访问: https://github.com/jquery/sizzle/wiki/Sizzle-主页
IE中的XPath实现是非常,非常慢。即使在IE6可怕的慢这就是为什么多数人倾向于基于正则表达式等,像嘶嘶使用CSS选择器或最新的是qwery。
为索引选择在CSS使用选择:nth-child(n)
a[5] = :nth-child(5)
我不能记住如果它与0或1启动,以便它也可以是4
此外,如果有不同类型的您选择在父内儿童的,则可以使用:nth-of-type()
只选择给定类型。你的情况:
a:nth-of-type(5)