Это:
var contents = document.getElementById('contents');
Так же, как это:
var contents = $('#contents');
Учитывая, что jQuery загружен?
javascript
jquery
jquery-selectors
Филипп Сенн
источник
источник
Ответы:
Не совсем!!
В jQuery, чтобы получить тот же результат, что
document.getElementById
и вы, вы можете получить доступ к объекту jQuery и получить первый элемент в объекте (помните, что объекты JavaScript действуют аналогично ассоциативным массивам).источник
document.getElementBy
, не работает правильно в <IE8. Он также получает элементы,name
поэтому теоретически можно утверждать, чтоdocument.getElementById
он не только вводит в заблуждение, но и может возвращать неверные значения. Я думаю, что @John это новое, но я подумал, что не мешало бы его добавить.$('#'+id)[0]
не равно,document.getElementById(id)
потому чтоid
может содержать символы, которые обрабатываются специально в jQuery!jquery equivalent of document.getelementbyid
и первый результат этого поста. благодарю вас!!!$('#contents')[0].id
возвращает имяНет.
Вызов
document.getElementById('id')
вернет необработанный объект DOM.Вызов
$('#id')
вернет объект jQuery, который упаковывает объект DOM и предоставляет методы jQuery.Таким образом, вы можете вызывать только методы jQuery, такие как
css()
илиanimate()
при$()
вызове.Вы также можете написать
$(document.getElementById('id'))
, что будет возвращать объект jQuery и эквивалентно$('#id')
.Вы можете получить базовый объект DOM из объекта jQuery, написав
$('#id')[0]
.источник
In one sentence, DOM objects are the objects that the web browser is using to render elements on the web page whereas jQuery objects are basically wrapper objects around a set of DOM elements.
Близко, но не то же самое. Они получают один и тот же элемент, но версия jQuery обернута в объект jQuery.
Эквивалент будет
или это
Они вытянут элемент из объекта jQuery.
источник
Обратите внимание на разницу в скорости. Прикрепите следующий фрагмент к вызову onclick:
Поочередно комментируйте один, а затем комментируйте другой. В моих тестах
С другой стороны,
Конечно, это за
10000
итерациями, поэтому в более простой ситуации я бы, вероятно, использовал jQuery для простоты использования и всех других интересных вещей, таких как.animate
и.fadeTo
. Но да, техническиgetElementById
это немного быстрее .источник
$('#someID')
сdocument.getElementById("someID")
? Я работаю над чем-то, что я широко использовал,$('#someID')
и моя страница работает медленно для ввода большого файла. Пожалуйста, предложите мне, каким должен быть мой ход.var $myId = $('#myId');
и повторно используйте сохраненную переменную$myId
. Поиск по идентификатору, как правило, довольно быстрый процесс, поэтому, если страница работает медленно, возможно, есть другая причина.Нет. Первый возвращает элемент DOM, или ноль, тогда как второй всегда возвращает объект jQuery. Объект jQuery будет пустым, если не найдено ни одного элемента с идентификатором
contents
.Элемент DOM, возвращаемый функцией,
document.getElementById('contents')
позволяет вам выполнять такие действия, как изменение.innerHTML
(или.value
) и т. Д., Однако вам необходимо использовать методы jQuery в объекте jQuery.Является более эквивалентным, однако, если ни один элемент с идентификатором
contents
не соответствует,document.getElementById('contents')
вернет значение null, но$('#contents').get(0)
вернет undefined.Одним из преимуществ использования объекта jQuery является то, что вы не получите никаких ошибок, если не было возвращено ни одного элемента, поскольку объект всегда возвращается. Однако вы получите ошибки, если попытаетесь выполнить операции
null
сdocument.getElementById
источник
Нет, на самом деле тот же результат будет:
jQuery не знает, сколько результатов будет возвращено из запроса. Вы получаете специальный объект jQuery, который представляет собой совокупность всех элементов управления, соответствующих запросу.
Часть того, что делает jQuery таким удобным, заключается в том, что методы MOST, вызываемые для этого объекта и выглядящие так, как будто они предназначены для одного элемента управления, фактически находятся в цикле, который вызывается для всех членов коллекции.
Когда вы используете синтаксис [0], вы берете первый элемент из внутренней коллекции. В этот момент вы получаете объект DOM
источник
В случае, если кто-то еще ударит это ... Вот еще одно отличие:
Если идентификатор содержит символы, которые не поддерживаются стандартом HTML (см. Здесь вопрос SO ), то jQuery может не найти его, даже если getElementById делает.
Это случилось со мной с идентификатором, содержащим символы "/" (например: id = "a / b / c"), используя Chrome:
смог найти свой элемент, но:
не.
Кстати, простым решением было переместить этот идентификатор в поле имени. JQuery без проблем нашел элемент, используя:
источник
Как и говорило большинство людей, основное отличие заключается в том, что он обернут в объект jQuery с вызовом jQuery по сравнению с необработанным объектом DOM с использованием прямого JavaScript. Разумеется, объект jQuery сможет выполнять с ним другие функции jQuery, но, если вам просто нужно выполнить простые манипуляции с DOM, такие как базовое моделирование или базовая обработка событий, прямой JavaScript-метод всегда немного быстрее, чем jQuery, поскольку необходимо загрузить во внешнюю библиотеку код, построенный на JavaScript. Это экономит дополнительный шаг.
источник
var contents = document.getElementById('contents');
var contents = $('#contents');
Фрагменты кода не совпадают. первый возвращает
Element
объект ( источник ). Второй, эквивалентный jQuery, вернет объект jQuery, содержащий коллекцию из нуля или одного элемента DOM. ( документация jQuery ). Внутренне использует JQuerydocument.getElementById()
для эффективности.В обоих случаях, если найдено более одного элемента, будет возвращен только первый элемент.
При проверке проекта github на наличие jQuery я обнаружил следующие фрагменты строки, которые, похоже, используют коды document.getElementById ( https://github.com/jquery/jquery/blob/master/src/core/init.js строка 68 и далее)
источник
Еще одно отличие:
getElementById
возвращает первое совпадение, а$('#...')
возвращает коллекцию совпадений - да, один и тот же идентификатор может повторяться в HTML-документе.Далее
getElementId
вызывается из документа, а$('#...')
может вызываться из селектора. Таким образом, в приведенном ниже кодеdocument.getElementById('content')
будет возвращено все тело, но$('form #content')[0]
он вернется внутрь формы.Может показаться странным использовать дубликаты идентификаторов, но если вы используете что-то вроде Wordpress, шаблон или плагин могут использовать тот же идентификатор, что и в контенте. Селективность JQuery может помочь вам там.
источник
JQuery построен на JavaScript. Это означает, что в любом случае это просто javascript.
document.getElementById ()
Jquery $ ()
источник
Я разработал базу данных noSQL для хранения деревьев DOM в веб-браузерах, где ссылки на все элементы DOM на странице хранятся в кратком индексе. Таким образом, функция "getElementById ()" не нужна для получения / изменения элемента. Когда элементы в дереве DOM создаются на странице, база данных назначает суррогатные первичные ключи каждому элементу. Это бесплатный инструмент http://js2dx.com
источник
Все ответы выше верны. Если вы хотите увидеть его в действии, не забывайте, что у вас есть консоль в браузере, где вы можете увидеть реальный результат кристально ясно:
У меня есть HTML:
Зайдите в консоль
(cntrl+shift+c)
и используйте эти команды, чтобы ясно увидеть ваш результатКак мы видим, в первом случае мы получили сам тег (то есть, строго говоря, объект HTMLDivElement). В последнем случае мы на самом деле имеем не простой объект, а массив объектов. И как уже упоминалось в других ответах выше, вы можете использовать следующую команду:
источник
Сегодня все ответы устарели. По состоянию на 2019 год вы можете напрямую получить доступ к файлам с идентификатором в javascript, просто попробуйте
Демо онлайн! - https://codepen.io/frank-dspeed/pen/mdywbre
источник