Я видел этот шаблон используется в некоторых коде ...
валюты = $ (document.getElementById ('валюта'));
Что ожидать функционально эквивалентен ...
валюты = $ ('# валюта');
, да. Раньше это было не так, когда IE6 и IE7 все еще были на месте. getElementById
в IE7 и ранее был сломан и возвращал элементы с соответствующими name
, а также соответствующие id
. В jQuery (1.x) встроен интеллект для обработки разбитых старых браузеров. К счастью, Microsoft исправила это в IE8.
Я предполагаю, что идея состоит в том, чтобы сделать селектор быстрее, поскольку он не нуждается в анализе строки выбора ... но действительно ли это делает заметную разницу?
Это, вероятно, имеет реальное значение, но не таким образом, что это означает что-либо воспринимаемое в реальном мире.Единственный способ узнать наверняка - test it на DOM, который является представителем тех, кого вы хотите знать, и в браузерах, на которые вы хотите получить ответ. (JSPerf, похоже, возникли проблемы на данный момент, хотя.)
Here's a test что не использовать представительный DOM предлагая существенную процентную разницу:
... но опять же, в реальных условиях, если вы не делаете это миллионы раз в цикле, это не имеет значения. Также обратите внимание, что тестируемые настолько быстрые, что поля ошибки, вероятно, будут большими.
В конце концов, 'getElementById' будет вызван в любом случае. Это выглядит немного как микро-оптимизация ... Давайте не будем даже читать: P – Lix
[Это сравнение] (http://jsperf.com/getelementbyid-vs-jquery-id/44) на самом деле намекает, что там является улучшением с вашим первым примером ... – Lix