37

Estaba trabajando con las herramientas de desarrollador de google chrome en una página sin jQuery (o cualquier otra biblioteca que utiliza el signo $ como acceso directo). Cuando inspeccioné $ por la consola (con solo escribir en y oprimir la tecla Enter), Tengo este:

$ 
function() { [native code] } 

Así, Chrome tiene alguna función nativa que puede ser referenciado por $. Sólo Chrome parece tener este y no puedo acceder a él a través de window['$'] ni a través de document['$'] o this['$'].

No he podido averiguar qué es esta función. ¿Sabes lo que hace y tal vez tienes alguna información de fondo sobre esto? ¡Gracias de antemano!

+0

Puede encontrar información en https://developers.google.com/chrome-developer-tools/docs/console y https://getfirebug.com/wiki/index.php/Command_Line_API. –

+0

¿Qué URL y qué versión de Chrome? Encontré una página que no usa jQuery y no alias '$' (fue sorprendentemente difícil), pero no veo 'function() {[native code]}'. ¿Te detuviste en un punto de quiebre? –

+1

@Matt Ball Simplemente puede abrir 'about: blank', abra la consola y escriba' $ 'y luego presione enter. –

Respuesta

4

Esto ha cambiado una vez más, incluso desde el año pasado.

La consola devtools proporciona $ como un alias de document.querySelector, junto con many other things; aquí está una lista extractada:

  • $(selector) devuelve la referencia al primer elemento DOM con el selector CSS especificado. Esta función es un alias para la función document.querySelector().
  • $$(selector) devuelve una matriz de elementos que coinciden con el selector CSS dado. Este comando es equivalente a llamar al document.querySelectorAll().
  • $_ devuelve el valor de la expresión evaluada más recientemente.
  • Los $0, $1, $2, $3 y $4 comandos funcionan como una referencia histórica de los últimos cinco elementos DOM inspeccionados dentro del panel Elementos o los últimos cinco objetos JavaScript montón seleccionado en el panel de perfiles.

... y un montón de otros.

Nota cómo se llama $ un alias de document.querySelector, pero dice $$ es "equivalente" a llamar document.querySelectorAll. Ninguno de los dos parece ser literalmente verdadero; $ === document.querySelector es false, y $$ devuelve una matriz , no un NodeList.

+1

¡Gracias! Mantener esta pregunta actualizada será útil para futuros visitantes. :) –

5

Ther're dos selectores de inspectores Webkit, el mismo que uno Mootools: $ y $$

se pueden encontrar algunas informaciones sobre el mismo, here

Son juste aquí para ayudarle en la depuración.

24

Es una de las funciones de Chrome Developer Tools (por lo que no está disponible en la página). Puedes ver documentation for it on the Console page (aunque eso solo dice que implementa el Firebug console commands)

Obtiene un elemento por su id.

+0

exactamente la documentación que estaba buscando, ¡gracias! –

+2

Ya no obtiene un elemento por id. Ahora implementa selectores más complejos. – Martin

5

https://developers.google.com/chrome-developer-tools/docs/console

Es sólo un acceso rápido a document.getElementById.

+0

Estoy de acuerdo, pero también me doy cuenta de que '$ == document.getElementById' devuelve' false' ... impar! – aaaidan

+0

@aaaidan, es porque simplemente no obtiene elementos por identificación, ¡también admite selectores de estilo sizzle! (no prueba con los más complejos) –

+0

Ah cierto. ¿Tal vez hace referencia a document.querySelector, entonces? – aaaidan

6

A juzgar por el link to the dev tools ahora se utiliza document.querySelector() en lugar de simplemente getElementById().

+0

buena actualización, es bueno saberlo - ¡gracias! –

13

Las respuestas existentes son obsoletas, $ no es un alias para document.getElementById o document.querySelector, pero un envoltorio para querySelector. Este contenedor realmente toma un segundo argumento opcional para el elemento para consultar al hijo de.

Esta familia de funciones está documentado bajo el Console: Selecting Elements:

Selección de elementos

Hay algunos atajos para la selección de elementos. Esto le ahorra un tiempo valioso en comparación con escribir sus contrapartes estándar.

$() Devuelve el primer elemento que coincide con el selector de CSS especificado. Es un atajo para document.querySelector().

$$() Devuelve una matriz de todos los elementos que coinciden con el selector de CSS especificado. Este es un alias para document.querySelectorAll()

$x() Devuelve una matriz de elementos que coinciden con el XPath especificado.


Sin embargo, estos valores son sólo los valores por defecto en la consola. Si la página sobrescribe al incluir algo como jQuery, la consola usará el valor de la página en sí, y algo como $('p') devolverá un objeto jQuery en lugar de solo el primer elemento p.

+1

El enlace está desactualizado, estas funciones ahora están documentadas [aquí] (https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference). También tenga en cuenta que '$$()' devuelve un 'Array', a diferencia de' document.querySelectorAll() 'que devuelve' NodeList'. – nollidge

+0

Y la [documentación actual] (https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference # queryselector) llama a '$' y un "alias" para 'document.querySelector' (aunque eso no parece ser cierto; al menos,' $ === document.querySelector' es 'falso'). –