【问题标题】:.eq() out of order.eq() 乱序
【发布时间】:2018-05-15 12:57:14
【问题描述】:

我正在尝试使用 eq() 方法选择 JQuery 对象的第三个元素。但由于某种原因,第 2 和第 3 选择以更改的顺序弹出:

var selection = $("[name=input0], [name=input1], [name=input2], [name=input3]");
selection.eq(1); //turns out to be input2!!

这种行为的原因可能是什么?我可以相信通过脚本中的索引来访问它吗?

【问题讨论】:

  • 顺序不取决于它们被选中的顺序,而是取决于它们在 jQuery 对象中的保存方式,而这又取决于元素在 DOM 中出现的顺序。因此,在这里查看您的 HTML 会有所帮助。
  • Do not post images of code or errors! 图片和屏幕截图可以很好地添加到帖子中,但请确保帖子在没有它们的情况下仍然清晰且有用。如果您发布代码或错误消息的图像,请确保您还复制并粘贴或直接在帖子中输入实际代码/消息。
  • 根据 JQuery 文档,“要创建一个具有明确定义的元素顺序且没有排序开销的 jQuery 对象,请使用 $(array_of_DOM_elements) 签名。”
  • @RoryMcCrossan 他们确实出现在 DOM 顺序 (html) 中,放在这里太大了

标签: javascript jquery arrays indexing


【解决方案1】:

根据: https://api.jquery.com/multiple-selector/

返回的 jQuery 对象中的 DOM 元素的顺序可能不相同,因为它们将按文档顺序排列。

【讨论】:

    【解决方案2】:

    借助答案和 cmets 以及阅读一些文档。

    原来 jQuery 是按照它们在 DOM (HTML) 中出现的顺序来选择元素的,所以:
    如果您使用该顺序,则使用对 jQuery 选择的直接数组访问将起作用,但只有在您还负责 HTML 时才能信任它,并且如果您要更改布局,则需要记住这一点。

    底线:不是选择特定元素的最佳方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 2013-11-01
      • 2013-08-19
      • 2013-12-03
      • 2017-03-07
      • 1970-01-01
      相关资源
      最近更新 更多