为什么使用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]
基本相同,非常小的优势