【问题标题】:JavaScript for Searching an Element's Specific Ancestor Like in XPath?用于在 XPath 中搜索元素特定祖先的 JavaScript?
【发布时间】:2011-02-26 18:08:44
【问题描述】:

从给定节点向下搜索效果非常好,并且与 Javascript 函数 querySelectorAll()querySelector() 跨浏览器兼容。

此函数允许声明任何用于搜索子元素的 CSS3 选择器。据我了解,没有办法搜索 parental 节点:W3 CSS3 Selectors

我也想用 XPath ax ancestor 搜索父节点。 类似(XPath)的东西:

select="./ancestor::*[@attributex='xxx'][2]"

请注意,我没有尝试过上面的 XPath 表达式,我不确定它是否只选择 最近的祖先,但这是我的意图。

我知道我可以 directly use XPath in JavaScript,但我宁愿避免它,因为我不知道 1) 浏览器兼容性和 2) 向下搜索适用于 querySelector/All()

我也宁愿避免一些for循环搜索一个.parentNode,并将其.getAttribute("attributex")与搜索到的进行比较。

任何想法如何使用跨浏览器兼容的 JavaScript 来实现这一点?

【问题讨论】:

    标签: javascript dom css-selectors


    【解决方案1】:

    我想你会喜欢 jQuery 的 parents([selector]) 方法。当然,它在兼容性方面具有优势。看看http://api.jquery.com/parents/

    【讨论】:

    • 感谢您指出 jQuery,parents() 和最接近的方法看起来很有希望。虽然,我不想在我当前的项目中使用外部库(但我想看看 jQuery 有一段时间了)。看起来我现在坚持使用 for 循环。
    • 好吧,我也不知道怎么做这个'crossbrowserly',除非你创建一个递归函数来获取 parents() 并比较它的 id 是否与你期望的匹配。我认为 jQuery 是完美的,尤其是因为你可以只使用它的核心 api 来做到这一点,而不需要使用任何花哨的插件或学习 jQuery 的工作原理。
    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    相关资源
    最近更新 更多