Es esto:
var contents = document.getElementById('contents');
Lo mismo que esto:
var contents = $('#contents');
Dado que jQuery está cargado?
javascript
jquery
jquery-selectors
Phillip Senn
fuente
fuente
Respuestas:
¡¡No exactamente!!
En jQuery, para obtener el mismo resultado
document.getElementById
, puede acceder al objeto jQuery y obtener el primer elemento del objeto (recuerde que los objetos JavaScript actúan de manera similar a las matrices asociativas).fuente
document.getElementBy
no funciona correctamente en <IE8. También obtiene elementos porname
lo que teóricamente podría argumentardocument.getElementById
que no solo es engañoso, sino que puede devolver valores incorrectos. Creo que @John nuevo esto, pero pensé que no estaría de más agregarlo.$('#'+id)[0]
no es igual adocument.getElementById(id)
porqueid
puede contener caracteres que se tratan de forma especial en jQuery!jquery equivalent of document.getelementbyid
y el primer resultado es esta publicación. ¡¡¡gracias!!!$('#contents')[0].id
devuelve el nombre de identificación.No.
Llamar
document.getElementById('id')
devolverá un objeto DOM sin procesar.La llamada
$('#id')
devolverá un objeto jQuery que envuelve el objeto DOM y proporciona métodos jQuery.Por lo tanto, solo puede llamar a métodos jQuery como
css()
oanimate()
en la$()
llamada.También puede escribir
$(document.getElementById('id'))
, lo que devolverá un objeto jQuery y es equivalente a$('#id')
.Puede obtener el objeto DOM subyacente de un objeto jQuery escribiendo
$('#id')[0]
.fuente
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.
Cerca, pero no es lo mismo. Están obteniendo el mismo elemento, pero la versión jQuery está envuelta en un objeto jQuery.
El equivalente sería este
o esto
Estos extraerán el elemento del objeto jQuery.
fuente
Una nota sobre la diferencia de velocidad. Adjunte el siguiente fragmento a una llamada onclick:
Alterna comentando uno y luego comenta el otro. En mis pruebas
Por otro lado, el
Por supuesto, eso se debe a las
10000
iteraciones, por lo que en una situación más simple probablemente usaría jQuery para facilitar su uso y todas las otras cosas interesantes como.animate
y.fadeTo
. Pero sí, técnicamentegetElementById
es bastante más rápido .fuente
$('#someID')
condocument.getElementById("someID")
? Estoy trabajando en algo en lo que he usado mucho$('#someID')
y mi página se ejecuta lentamente para entradas de archivos grandes. Por favor, sugiérame cuál debería ser mi movimiento.var $myId = $('#myId');
y reutilice la variable guardada$myId
. Sin embargo, encontrar por id es algo bastante rápido, por lo que si la página es lenta, probablemente haya una razón diferente.No. El primero devuelve un elemento DOM, o nulo, mientras que el segundo siempre devuelve un objeto jQuery. El objeto jQuery estará vacío si no
contents
coincide ningún elemento con el id .El elemento DOM devuelto por le
document.getElementById('contents')
permite hacer cosas como cambiar el.innerHTML
(o.value
) etc., sin embargo, necesitará usar métodos jQuery en el objeto jQuery.Es más equitativo, sin embargo, si ningún elemento con el id de
contents
coincide,document.getElementById('contents')
devolverá nulo, pero$('#contents').get(0)
volverá indefinido.Una ventaja de usar el objeto jQuery es que no obtendrá ningún error si no se devuelve ningún elemento, ya que siempre se devuelve un objeto. Sin embargo, obtendrá errores si intenta realizar operaciones en el
null
devuelto pordocument.getElementById
fuente
No, en realidad el mismo resultado sería:
jQuery no sabe cuántos resultados se devolverían de la consulta. Lo que obtienes es un objeto jQuery especial que es una colección de todos los controles que coinciden con la consulta.
Parte de lo que hace que jQuery sea tan conveniente es que la mayoría de los métodos invocados en este objeto que parecen estar destinados a un solo control, en realidad están en un bucle llamado a todos los miembros de la colección
Cuando usa la sintaxis [0], toma el primer elemento de la colección interna. En este punto, obtienes un objeto DOM
fuente
En caso de que alguien más golpee esto ... Aquí hay otra diferencia:
Si la identificación contiene caracteres que no son compatibles con el estándar HTML (consulte la pregunta SO aquí ), entonces jQuery puede no encontrarlo incluso si getElementById sí.
Esto me sucedió con una identificación que contenía caracteres "/" (ej: id = "a / b / c"), usando Chrome:
pude encontrar mi elemento pero:
No.
Por cierto, la solución simple era mover esa identificación al campo de nombre. JQuery no tuvo problemas para encontrar el elemento usando:
fuente
Al igual que la mayoría de la gente ha dicho, la principal diferencia es el hecho de que está envuelto en un objeto jQuery con la llamada jQuery frente al objeto DOM sin formato que usa JavaScript directo. El objeto jQuery podrá realizar otras funciones de jQuery con él, por supuesto, pero, si solo necesita hacer una simple manipulación DOM como un estilo básico o un manejo básico de eventos, el método directo de JavaScript siempre es un poco más rápido que jQuery ya que no lo hace ' No tiene que cargar en una biblioteca externa de código construido en JavaScript. Se ahorra un paso extra.
fuente
var contents = document.getElementById('contents');
var contents = $('#contents');
Los fragmentos de código no son lo mismo. el primero devuelve un
Element
objeto ( fuente ). El segundo, jQuery equivalente devolverá un objeto jQuery que contiene una colección de cero o un elemento DOM. ( documentación de jQuery ). Internamente, jQuery utilizadocument.getElementById()
para la eficiencia.En ambos casos, si se encuentra más de un elemento, solo se devolverá el primer elemento.
Al verificar el proyecto github para jQuery, encontré los siguientes fragmentos de línea que parecen estar usando los códigos document.getElementById ( https://github.com/jquery/jquery/blob/master/src/core/init.js línea 68 en adelante)
fuente
Otra diferencia:
getElementById
devuelve la primera coincidencia, mientras que$('#...')
devuelve una colección de coincidencias; sí, la misma ID se puede repetir en un documento HTML.Además,
getElementId
se llama desde el documento, mientras que$('#...')
se puede llamar desde un selector. Entonces, en el código a continuación,document.getElementById('content')
devolverá todo el cuerpo pero$('form #content')[0]
volverá dentro del formulario.Puede parecer extraño usar ID duplicados, pero si está usando algo como Wordpress, una plantilla o complemento puede usar la misma identificación que usa en el contenido. La selectividad de jQuery podría ayudarte.
fuente
jQuery está construido sobre JavaScript. Esto significa que es solo JavaScript de todos modos.
document.getElementById ()
Jquery $ ()
fuente
Desarrollé una base de datos noSQL para almacenar árboles DOM en navegadores web donde las referencias a todos los elementos DOM en la página se almacenan en un índice corto. Por lo tanto, la función "getElementById ()" no es necesaria para obtener / modificar un elemento. Cuando los elementos en el árbol DOM se instancian en la página, la base de datos asigna claves primarias sustitutas a cada elemento. Es una herramienta gratuita http://js2dx.com
fuente
Todas las respuestas anteriores son correctas. En caso de que quiera verlo en acción, no olvide que tiene la consola en un navegador donde puede ver el resultado real como el cristal:
Tengo un HTML:
Vaya a la consola
(cntrl+shift+c)
y use estos comandos para ver su resultado claramenteComo podemos ver, en el primer caso obtuvimos la etiqueta en sí (es decir, estrictamente hablando, un objeto HTMLDivElement). En este último, en realidad no tenemos un objeto simple, sino una matriz de objetos. Y como se menciona en otras respuestas anteriores, puede usar el siguiente comando:
fuente
Todas las respuestas son antiguas hoy a partir de 2019, puede acceder directamente a los archivos con clave de identificación en JavaScript, simplemente pruébelo
Demo en línea! - https://codepen.io/frank-dspeed/pen/mdywbre
fuente