É isto:
var contents = document.getElementById('contents');
O mesmo que este:
var contents = $('#contents');
Dado que o jQuery está carregado?
javascript
jquery
jquery-selectors
Phillip Senn
fonte
fonte
Respostas:
Não exatamente!!
No jQuery, para obter o mesmo resultado
document.getElementById
, você pode acessar o objeto jQuery e obter o primeiro elemento do objeto (lembre-se de que objetos JavaScript agem de maneira semelhante às matrizes associativas).fonte
document.getElementBy
, não funciona corretamente no <IE8. Ele também obtém elementos,name
portanto, teoricamente, você poderia argumentar quedocument.getElementById
não é apenas enganoso, mas pode retornar valores incorretos. Acho @ John novo este, mas eu pensei que não iria prejudicar a adicioná-lo no.$('#'+id)[0]
não é igual a,document.getElementById(id)
porqueid
pode conter caracteres que são tratados especiais no jQuery!jquery equivalent of document.getelementbyid
e o primeiro resultado é este post. obrigado!!!$('#contents')[0].id
retorna o nome do ID.Não.
A chamada
document.getElementById('id')
retornará um objeto DOM bruto.A chamada
$('#id')
retornará um objeto jQuery que agrupa o objeto DOM e fornece métodos jQuery.Portanto, você só pode chamar métodos jQuery como
css()
ouanimate()
na$()
chamada.Você também pode escrever
$(document.getElementById('id'))
, o que retornará um objeto jQuery e é equivalente a$('#id')
.Você pode obter o objeto DOM subjacente de um objeto jQuery escrevendo
$('#id')[0]
.fonte
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.
Perto, mas não é o mesmo. Eles estão recebendo o mesmo elemento, mas a versão do jQuery está envolvida em um objeto jQuery.
O equivalente seria este
ou isto
Isso puxará o elemento para fora do objeto jQuery.
fonte
Uma nota sobre a diferença de velocidade. Anexe o seguinte snipet a uma chamada onclick:
Alterne comentar um fora e depois comentar o outro. Nos meus testes,
Por outro lado, o
Obviamente, isso acabou em
10000
iterações, portanto, em uma situação mais simples, eu provavelmente usaria o jQuery para facilitar o uso e todas as outras coisas legais, como.animate
e.fadeTo
. Mas sim, tecnicamentegetElementById
é um pouco mais rápido .fonte
$('#someID')
pordocument.getElementById("someID")
? Estou trabalhando em algo em que tenho usado extensivamente$('#someID')
e minha página é lenta para entradas de arquivos grandes. Por favor, sugira-me qual deve ser minha decisão.var $myId = $('#myId');
e reutilize a variável salva$myId
. Encontrar por ID geralmente é uma coisa bastante rápida, portanto, se a página estiver lenta, provavelmente há um motivo diferente.Não. O primeiro retorna um elemento DOM, ou nulo, enquanto o segundo sempre retorna um objeto jQuery. O objeto jQuery ficará vazio se nenhum elemento com o ID de
contents
corresponder.O elemento DOM retornado por
document.getElementById('contents')
permite que você faça coisas como alterar o.innerHTML
(ou.value
) etc; no entanto, você precisará usar os métodos jQuery no objeto jQuery.É mais equivalente, no entanto, se nenhum elemento com o ID de
contents
for correspondido,document.getElementById('contents')
retornará nulo, mas$('#contents').get(0)
retornará indefinido.Um benefício em usar o objeto jQuery é que você não receberá nenhum erro se nenhum elemento for retornado, pois um objeto é sempre retornado. No entanto, você receberá erros se tentar executar operações
null
retornadas pordocument.getElementById
fonte
Não, na verdade o mesmo resultado seria:
O jQuery não sabe quantos resultados serão retornados da consulta. O que você recebe de volta é um objeto jQuery especial, que é uma coleção de todos os controles correspondentes à consulta.
Parte do que torna o jQuery tão conveniente é que a maioria dos métodos chamados nesse objeto, que parecem destinados a um controle, estão na verdade em um loop chamado em todos os membros da coleção
Quando você usa a sintaxe [0], obtém o primeiro elemento da coleção interna. Neste ponto, você obtém um objeto DOM
fonte
Caso alguém acerte isso ... Aqui está outra diferença:
Se o ID contiver caracteres que não são suportados pelo padrão HTML (consulte a pergunta SO aqui ), o jQuery poderá não encontrá-lo, mesmo que getElementById o faça.
Isso aconteceu comigo com um ID contendo caracteres "/" (ex: id = "a / b / c"), usando o Chrome:
foi capaz de encontrar meu elemento, mas:
nao fiz.
Btw, a correção simples era mover esse ID para o campo de nome. O JQuery não teve problemas para encontrar o elemento usando:
fonte
Como a maioria das pessoas disse, a principal diferença é o fato de ele estar envolvido em um objeto jQuery com a chamada jQuery versus o objeto DOM bruto usando JavaScript direto. O objeto jQuery poderá executar outras funções do jQuery, é claro, mas, se você precisar fazer uma manipulação DOM simples, como estilo básico ou manipulação básica de eventos, o método JavaScript direto será sempre um pouco mais rápido que o jQuery, já que você não ' Não é necessário carregar uma biblioteca externa de código criada em JavaScript. Ele salva uma etapa extra.
fonte
var contents = document.getElementById('contents');
var contents = $('#contents');
Os trechos de código não são os mesmos. o primeiro retorna um
Element
objeto ( origem ). O segundo, equivalente ao jQuery, retornará um objeto jQuery que contém uma coleção de zero ou um elemento DOM. ( documentação do jQuery ). Internamente, o jQuery usadocument.getElementById()
para obter eficiência.Nos dois casos, se mais de um elemento encontrado, apenas o primeiro elemento será retornado.
Ao verificar o jQuery no projeto github, encontrei os seguintes trechos de linha que parecem estar usando os códigos document.getElementById ( https://github.com/jquery/jquery/blob/master/src/core/init.js linha 68 em diante)
fonte
Outra diferença:
getElementById
retorna a primeira correspondência, enquanto$('#...')
retorna uma coleção de correspondências - sim, o mesmo ID pode ser repetido em um documento HTML.Além disso,
getElementId
é chamado a partir do documento, enquanto$('#...')
pode ser chamado a partir de um seletor. Portanto, no código abaixo,document.getElementById('content')
retornará o corpo inteiro, mas$('form #content')[0]
retornará dentro do formulário.Pode parecer estranho usar IDs duplicados, mas se você estiver usando algo como o Wordpress, um modelo ou plugin poderá usar o mesmo ID que você usa no conteúdo. A seletividade do jQuery pode ajudá-lo por aí.
fonte
O jQuery é construído sobre JavaScript. Isso significa que é apenas javascript de qualquer maneira.
document.getElementById ()
Jquery $ ()
fonte
Desenvolvi um banco de dados noSQL para armazenar árvores DOM em navegadores da Web, onde as referências a todos os elementos DOM na página são armazenadas em um pequeno índice. Portanto, a função "getElementById ()" não é necessária para obter / modificar um elemento. Quando os elementos na árvore DOM são instanciados na página, o banco de dados atribui chaves primárias substitutas a cada elemento. É uma ferramenta gratuita http://js2dx.com
fonte
Todas as respostas acima estão corretas. Caso queira vê-lo em ação, não se esqueça de ter o Console em um navegador onde é possível ver o resultado real:
Eu tenho um HTML:
Vá para o console
(cntrl+shift+c)
e use esses comandos para ver seu resultado claramenteComo podemos ver, no primeiro caso, obtivemos a própria tag (ou seja, estritamente falando, um objeto HTMLDivElement). Neste último, na verdade, não temos um objeto simples, mas uma matriz de objetos. E, como mencionado por outras respostas acima, você pode usar o seguinte comando:
fonte
Todas as respostas são antigas hoje, a partir de 2019, você pode acessar diretamente campos com chave id em javascript, basta experimentá-lo
Demo Online! - https://codepen.io/frank-dspeed/pen/mdywbre
fonte