web-dev-qa-db-fra.com

jquery select element par xpath

J'ai un sélecteur de xpath. Comment puis-je obtenir les éléments correspondant à ce sélecteur en utilisant jQuery?

J'ai vu https://developer.mozilla.org/fr/Introduction_to_using_XPath_in_JavaScript mais il n'utilise pas jQuery et il semble un peu trop détaillé, et je suppose que ce n'est pas multi-navigateur.

En outre, ceci http://jsfiddle.net/CJRmk/ ne semble pas fonctionner.

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 niveau 3 XPath) est pris en charge par Firefox, Chrome, Safari et Opera - le seul navigateur majeur manquant est MSIE. Néanmoins, jQuery prend en charge les expressions XPath de base: - http://docs.jquery.com/DOM/Traversing/Selectors#XPath_Selectors (déplacé dans un plug-in de la version actuelle de jQuery, voir https://plugins.jquery.com/xpath / ). Il convertit simplement les expressions XPath en sélecteurs CSS équivalents.

23
Wladimir Palant

Si vous êtes en train de déboguer ou similaire - Dans chrome outils de développement, vous pouvez simplement utiliser

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

Commencez par créer une fonction de sélecteur 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;
}

Pour utiliser le sélecteur xpath avec jquery, vous pouvez faire comme ceci:

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

J'espère que cela peut aider.

18
Nanang El Sutra