【问题标题】:Jquery faster way to find a child of an elementJquery更快的方法来查找元素的子元素
【发布时间】:2016-05-09 21:25:57
【问题描述】:

我有以下 html,我想在 div 中获取输入

<div id="div1" >
    <input class="myinput" value="input inside div1"/>
 </div>

<div id="div2" >
   <input class="myinput" value="input inside div2"/>
</div>

为了获得输入,我有两种方法,问题是首选哪一种。到目前为止,我已经尝试了以下两种方法。请建议哪个更好以及为什么或者如果有其他通过类名获取元素的子元素的最佳方法,我也是开放的。

  var input1 = $("#div1 .myinput"); OR
  var input1 = $("#div1").find(".myinput");

【问题讨论】:

  • 性能上的差异是如此之小,以至于它真的无关紧要。使用任何让您感觉更舒服的东西。
  • ...并且不要使用重复的 ID。
  • 我刚刚编辑了我的问题以使用类。

标签: jquery arrays dom


【解决方案1】:

我创建了一个jsFiddle 来比较两个进程的性能,并始终发现$("#div1").find(".myinput"); 更有效。

这对我来说很有意义。 IIRC,#div1 .myinput 将首先在 DOM 中找到所有.myinput 元素,然后仅返回具有#div1 祖先的元素。而#div1 .find(.myinput) 只会在 DOM 中找到第一个 #div1,然后解析它的子元素,从而有效地减少所需的解析量,从而产生更高效的过程。

问题编辑之前的上一个答案:

最快的方法就是使用:

var input1 = $('#input');

由于 ID 属性应该是唯一的,因此添加其他任何内容都是没有意义的。

【讨论】:

  • 请在急于回答我有两个具有相同 id 的输入之前仔细阅读问题,您的方法会让我得到最后添加的那个。
  • @AmeteGirl 具有相同 ID 的两个输入是无效的 HTML。我建议您编写符合标准的代码。
  • ...或使用类代替 id
  • 忘记存储为高效的变量?
  • 谢谢,这是有道理的。
猜你喜欢
  • 1970-01-01
  • 2023-03-07
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
  • 1970-01-01
  • 2019-12-14
  • 2018-07-09
相关资源
最近更新 更多