【问题标题】:Looking for faster or better method to select the nth child of an XML node using jquery寻找更快或更好的方法来使用 jquery 选择 XML 节点的第 n 个子节点
【发布时间】:2011-08-04 23:52:34
【问题描述】:

这是我的代码:

var CDs=$(xml).find("CDs");
var NthChild = $(CDs).find("CD:nth-child(index)"); // nth-child 0th element starts at 1

我在这里使用 find 方法;我必须指定子节点名称,记为“CD”。是否有更快或更短的方法,也许不需要我指定子节点的名称(即“CD”)来查找第 n 个子节点?

谢谢。

更新

我发现了一种不需要通过名称指定子节点的格式:

var NthChild = $(CDs).children(":nth-child(index)");

【问题讨论】:

  • 您还可以使用比 CSS-selectors/jQuery 更快、更强大的 XPath 表达式遍历您的 XMLDocument。
  • 谢谢。是的,这就是我在 jquery 之前分解代码的方式。但是,我正在尝试最大化浏览器的兼容性。不过,我想并不是每一行代码都必须重构为 jQuery 等价物。

标签: javascript jquery xml css-selectors


【解决方案1】:
$(xml).find("CDs CD").eq(index);

根据jQuery docs

因为 :eq() 是 jQuery 扩展而不是 CSS 的一部分 规范,使用 :eq() 的查询不能利用 本机 DOM querySelectorAll() 提供的性能提升 方法。为了在现代浏览器中获得更好的性能,请使用 $("your-pure-css-selector").eq(index) 代替。

【讨论】:

    【解决方案2】:
    $(xml).find("CDs CD:eq(0)")
    

    将所需的索引放在eq 之后的括号内

    或者,如果 CD 元素仅存在于 CDs 下,并且您不必担心会得到错误的元素:

    $(xml).find("CD:eq(0)")
    

    【讨论】:

    • 非常感谢!很棒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 2013-03-31
    相关资源
    最近更新 更多