为什么使用jQuery(selector).get(0)而不是jQuery(selector)来获取DOM元素?

如果我只想将jQuery数组中的第一项作为DOM元素使用,那么使用jQuery对使用$(selector).get(0)不是$(selector)[0]有什么好处?

HTML:

 

使用Javascript:

 var selector = '#myForm'; var domElement = $(selector).get(0); //Returns [object HTMLFormElement] //Or var domElement = $(selector)[0]; //Also returns [object HTMLFormElement] 
  • .get()是要键入的更多字符。
  • 如果$(selector)为空( undefined ),则两个方法都返回相同的结果
  • 关于.get()的jQuery文档指出,您可以简单地使用索引访问器来获取第n个元素,但是您没有获得.get()的其他好处,例如使用负数来从结尾返回项目数组。
  • 此外,您可以调用不带参数的.get()来返回jQuery数组的所有DOM元素。

.get允许您使用负指数。 例如:

 1 2 3 

$("span").get(-1); 是指第三个span

但是,如果您不需要该function,只想选择一个元素.get(0)[0]是相同的。 注意this[num]

 // jQuery code get: function (num) { return num == null ? // Return a 'clean' array this.toArray() : // Return just the object (num < 0 ? this[this.length + num] : this[num]); }, 

为了速度,我创建了一个循环每10,000,000次的jsfiddle。 我创建了两个测试,在文档的开头有一个表单,最后有1200行虚拟HTML。 以下是一些初步结果:

 Test1 form at beginning with .get(0): 15981ms - faster form at beginning with [0]: 16089ms form at end with .get(0): 16554ms form at end with [0]: 15969ms - faster Test2 form at beginning with .get(0): 14137ms form at beginning with [0]: 14034ms - faster form at end with .get(0): 13756ms - faster form at end with [0]: 14492ms Test3 form at beginning with .get(0): 15952ms - faster form at beginning with [0]: 16810ms form at end with .get(0): 15905ms form at end with [0]: 15532ms - faster 

看起来速度没有明显差异。 但是,您必须检查不同的浏览器才能确定。

你可以在这里查看小提琴: http : //jsfiddle.net/AFfYx/ (大约需要一分钟才能运行)

我的代表太低了,无法评论ericbowden的回答,但这是一个比较两个操作的jsperf测试:

http://jsperf.com/selector-get-0-vs-selector-0

共识(在Chrome 32上):对[0]基本相同,非常小的优势