web-dev-qa-db-ja.com

xpathによるjquery select要素

Xpathセレクターがあります。 jQueryを使用して、そのセレクターに一致する要素を取得するにはどうすればよいですか?

https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript を見てきましたが、jQueryを使用しておらず、少し冗長すぎるようで、クロスブラウザではないと思います。

また、この http://jsfiddle.net/CJRmk/ は機能しないようです。

alert($("//a").length);
<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>
59
Quamis

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セレクターに変換するだけです。

23
Wladimir Palant

デバッグまたは同様の場合-chrome開発者ツールでは、単に使用できます

$x('/html/.//div[@id="text"]')
134
Jeppe Liisberg

最初に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;
}

Jqueryでxpathセレクターを使用するには、次のようにします。

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

これが役立つことを願っています。

18
Nanang El Sutra