webentwicklung-frage-antwort-db.com.de

jquery select element by xpath

Ich habe einen Xpath-Selektor. Wie kann ich mit jQuery die Elemente ermitteln, die zu diesem Selektor passen?

Ich habe https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript gesehen, aber es verwendet kein jQuery, und es scheint ein wenig zu ausführlich zu sein, und ich nehme an, es ist nicht browserübergreifend.

Auch dieses http://jsfiddle.net/CJRmk/ scheint nicht zu funktionieren.

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) wird in Firefox, Chrome, Safari und Opera - der einzige Hauptbrowser, der fehlt, ist MSIE. Trotzdem unterstützt jQuery grundlegende XPath-Ausdrücke: - http://docs.jquery.com/DOM/Traversing/Selectors#XPath_Selectors (in ein Plugin in der aktuellen jQuery-Version verschoben, siehe https://plugins.jquery.com/xpath) / ). Es konvertiert einfach XPath-Ausdrücke in äquivalente CSS-Selektoren.

23
Wladimir Palant

Wenn Sie debuggen oder ähnliches - In chrome developer tools), können Sie einfach verwenden

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

Erstellen Sie zunächst eine xpath-Auswahlfunktion.

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;
}

So verwenden Sie den xpath-Selektor mit jquery:

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

Hoffe das kann helfen.

18
Nanang El Sutra