jquery按xpath选择元素

Qua*_*mis 62 javascript jquery xpath

我有一个xpath选择器.如何使用jQuery获取与该选择器匹配的元素?

我已经看过https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript但它不使用jQuery,它看起来有点过于冗长,我认为它不是跨浏览器.

此外,这http://jsfiddle.net/CJRmk/似乎不起作用.

alert($("//a").length);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<a href="a1.php"></a>
<a href="a2.php"></a>
Run Code Online (Sandbox Code Playgroud)

Jep*_*erg 136

如果您正在调试或类似 - 在Chrome开发人员工具中,您可以简单地使用

$x('/html/.//div[@id="text"]')
Run Code Online (Sandbox Code Playgroud)

  • @GregT ......和Firefox (8认同)
  • 对于选择和使用函数,它不起作用:`$ x('/ html /.// div [@ id ="text"]').hide();`必须使用这个:`$( $ X( '/ HTML DIV /.// [@ ID = "文本"]'))隐藏();` (3认同)
  • 请注意,“$x()”不是 jQuery。它正在返回 HTML DOM。`.hide()` 是一个 jQuery 函数,因此您需要将 HTML DOM 包装在 `$()` 中才能访问 jQuery 函数,就像使用任何其他本机 JS DOM 函数一样。 (2认同)

Wla*_*ant 23

document.evaluate()Firefox,Chrome,Safari和Opera支持(DOM Level 3 XPath) - 唯一缺少的主要浏览器是MSIE.不过,jQuery支持基本的XPath表达式:http://docs.jquery.com/DOM/Traversing/Selectors#XPath_Selectors(移动到当前jQuery版本的插件中,请参阅https://plugins.jquery.com/xpath/) .它只是将XPath表达式转换为等效的CSS选择器.


小智 18

首先创建一个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;
}
Run Code Online (Sandbox Code Playgroud)

要将xpath选择器与jquery一起使用,您可以这样做:

$(_x('/html/.//div[@id="text"]')).attr('id', 'modified-text');
Run Code Online (Sandbox Code Playgroud)

希望这可以提供帮助.