jquery выбрать элемент по xpath - PullRequest
58 голосов
/ 23 июня 2011

У меня есть селектор 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>

Ответы [ 3 ]

129 голосов
/ 13 июня 2013

Если вы отлаживаете или подобное - в инструментах разработчика Chrome вы можете просто использовать

$x('/html/.//div[@id="text"]')
23 голосов
/ 23 июня 2011

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.

18 голосов
/ 03 февраля 2013

Сначала создайте функцию селектора 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');

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...