使用XPath在jQuery中选择元素?

10

有没有插件可以让我做到这一点?文档说(XPath兼容插件),该功能已经在Jquery版本1.2中被删除,而它链接的插件也已经不存在了!

1个回答

12

大多数浏览器支持使用XPath表达式选择元素的document.evaluate()函数,无需使用jQuery。唯一不支持该功能的主流浏览器是Internet Explorer。然而,Dimitri Glazkov已经创建了一个库来实现IE缺失的功能。

var result = document.evaluate("//a[@href='#']", document, null, 0, null),
    item;

while (item = result.iterateNext()) {
    // item will be an <a> element with href="#" here
}

你可以很容易地创建一个插件来包装这个功能:
(function($) {
    $.xpath = function(exp, ctxt) {
        var item, coll = [],
            result = document.evaluate(exp, ctxt || document, null, 5, null);

        while (item = result.iterateNext())
            coll.push(item);

        return $(coll);
    }
})(jQuery);

// And call it like so:
$.xpath("//a[@href='#']").click(function () { return false; });

一个更好的解决方案在这里展示:https://dev59.com/wXI95IYBdhLWcg3w-DH0,您可以直接使用该字符串作为本地CSS选择器。 - Michael
1
@Michael:那个问题和解决方案与这个问题无关。这个问题询问如何使用XPath语法选择元素,而那个问题询问如何为已选择的元素创建CSS选择器。你不能真正地说哪一个比另一个更好,因为它们都处理不同的问题。 - Andy E

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接