Ответ 1
В функциональности (хотя и не в скорости) все эквивалентны:
-
var a0 = $($('.answer')[0]);
-
var a0 = $('.answer').first();
- см. http://api.jquery.com/first/ -
var a0 = $('.answer:first');
- см. http://api.jquery.com/first-selector/ -
var a0 = $('.answer').eq(0);
- см. http://api.jquery.com/eq/ -
var a0 = $('.answer:eq(0)');
- см. http://api.jquery.com/eq-selector/
Что лучше?
Было высказано предположение , что селекторные версии должны быть быстрее, чем версии метода (и логика имеет смысл), но я еще не нашел надежного кросс-браузера, multi -документ, который доказывает, что это правда.
И в некоторых случаях вы не можете использовать селектор, так как у вас есть объект jQuery, полученный в результате цепочечных результатов, и он должен позже pare it down.
Изменить. Основываясь на отличной информации из нижеприведенных тестов @yc, следуют текущие (2011-февраль-4) результаты тестов, суммированные и сравниваемые с базовым уровнем .answer:first
:
:first :eq(0) .first() .eq(0) $($('...')[0]) Chrome 8+ 100% 92% 224% 266% 367% FF 3.6 100% 100% 277% 270% 309% FF 4.0b 100% 103% 537% 521% 643% Safari 5 100% 93% 349% 352% 467% Opera 11 100% 103% 373% 374% 465% IE 8 100% 101% 1130% 1246% 1767% iPhone 4 100% 95% 269% 316% 403% ===================================================== Weighted 100% 92% 286% 295% 405% Major 100% 95% 258% 280% 366%
- Строка Взвешенная показывает производительность, взвешенную по количеству тестов на браузер; популярные браузеры (среди этих тестов) считаются более сильными.
- Строка Major показывает то же самое, включая не бета-версии основных браузеров на рабочем столе.
Вкратце: гипотеза (в настоящее время) неверна. Методы значительно быстрее, чем селектор Sizzle, и почти без исключения код OP $($('.answer')[0])
является самым быстрым из всех!