我有一个 XPath 选择器。如何使用 jQuery 获取与该选择器匹配的元素?
我见过 https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript 但它没有使用 jQuery,而且看起来有点过于冗长,而且我想它不是跨浏览器。
此外,此 http://jsfiddle.net/CJRmk/ 似乎不起作用。
如果您正在调试或类似 - 在 chrome 开发人员工具中,您可以简单地使用
$x('/html/.//div[@id="text"]')
document.evaluate()
(DOM Level 3 XPath)在 Firefox、Chrome、Safari 和 Opera 中受支持 - 唯一缺少的主要浏览器是 MSIE。不过,jQuery 支持基本的 XPath 表达式:http://docs.jquery.com/DOM/Traversing/Selectors#XPath_Selectors(在当前 jQuery 版本中移至插件中,请参阅 https://plugins.jquery.com/xpath/)。然而,它只是将 XPath 表达式转换为等效的 CSS 选择器。
首先创建一个 xpath 选择器函数。
function _x(STR_XPATH) {
var xresult = document.evaluate(STR_XPATH, document, null, XPathResult.ANY_TYPE, null);
var xnodes = [];
var xres;
while (xres = xresult.iterateNext()) {
xnodes.push(xres);
}
return xnodes;
}
要将 xpath 选择器与 jquery 一起使用,您可以这样做:
$(_x('/html/.//div[@id="text"]')).attr('id', 'modified-text');
希望这能有所帮助。
不定期副业成功案例分享
document.evaluate()
的简写。document.evaluate()
的一个非常简单的便捷包装器。 More info on the helper commands$x('/html/.//div[@id="text"]').hide();
必须改用这个:$($x('/html/.//div[@id="text"]')).hide();
$x()
不是 jQuery。它正在返回 HTML DOM。.hide()
是一个 jQuery 函数,因此您需要将 HTML DOM 包装在$()
中才能访问 jQuery 函数,就像您使用任何其他原生 JS DOM 函数一样。