Зачем использовать jQuery (selector).get(0) вместо jQuery (selector) [0], чтобы получить элемент DOM?
С помощью jQuery можно ли использовать $(selector).get(0)
over $(selector)[0]
, если я просто хочу получить первый элемент в массиве jQuery как элемент DOM?
HTML:
<form id="myForm"></form>
JavaScript:
var selector = '#myForm';
var domElement = $(selector).get(0); //Returns [object HTMLFormElement]
//Or
var domElement = $(selector)[0]; //Also returns [object HTMLFormElement]
-
.get()
больше символов для ввода.
- Оба метода возвращают тот же результат, если
$(selector)
пуст (undefined
)
- Документация jQuery на
.get()
отмечает, что вы можете просто использовать индексный доступ для получения n-го элемента, но вы не получите других преимуществ .get()
например, используя отрицательное число для возврата элементов из конца массива.
- Кроме того, вы можете вызвать
.get()
без аргументов, чтобы возвращать все элементы DOM массива jQuery.
Ответы
Ответ 1
.get
позволяет использовать отрицательные индексы. Например:
<span>1</span>
<span>2</span>
<span>3</span>
$("span").get(-1);
относится к третьему span
.
Но если вам не нужна эта функция и вы хотите выбрать только один элемент .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]);
},
Ответ 2
В интересах скорости я создал jsfiddle, который пересекает каждые 10 000 000 раз. Я создал два теста с формой в начале документа и концом с 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/ (требуется около минуты)
Ответ 3
У меня слишком низкая репутация, чтобы прокомментировать ответ ericbowden, но вот тест jsperf, сравнивающий две операции:
http://jsperf.com/selector-get-0-vs-selector-0
Консенсус (на Chrome 32): в основном то же самое, очень незначительное преимущество по отношению к [0]