jQuery sucintamente Core jQuery

Concepto base detrás de jQuery

Si bien existen algunas variaciones conceptuales (por ejemplo, funciones como $ .ajax) en la API de jQuery, el concepto central detrás de jQuery es "encontrar algo, hacer algo". Más específicamente, seleccione los elementos DOM de un documento HTML y luego haga algo con ellos usando los métodos jQuery. Este es el concepto del panorama general..

Para llevar este concepto a casa, reflexiona sobre el siguiente código.

          

Tenga en cuenta que en este documento HTML estamos utilizando jQuery para seleccionar un elemento DOM (). Con algo seleccionado, luego hacemos algo con la selección invocando los métodos jQuery texto(), attr (), y appendTo ().

los texto método llamado en el envuelto elemento y establecer el texto de visualización del elemento para que sea "jQuery". los attr llamada establece el href atribuir al sitio web jQuery.

Deshacer el concepto fundacional de "encontrar algo, hacer algo" es fundamental para avanzar como desarrollador de jQuery.


El Concepto, Detrás del Concepto, Detrás de jQuery

Al seleccionar algo y hacer algo es el concepto central detrás de jQuery, me gustaría extender este concepto para incluir la creación de algo también. Por lo tanto, el concepto detrás de jQuery podría extenderse para incluir primero crear algo nuevo, seleccionarlo y luego hacer algo con él. Podríamos llamar a esto el concepto, detrás del concepto, detrás de jQuery..

Lo que estoy intentando hacer obvio es que no está atascado con solo seleccionar algo que ya está en el DOM. También es importante pensar que jQuery se puede usar para crear nuevos elementos DOM y luego hacer algo con estos elementos..

En el ejemplo de código de abajo, creamos una nueva Elemento que no se encuentra en el DOM. Una vez creado, es seleccionado y luego manipulado..

       

El concepto clave para recoger aquí es que estamos creando el Elemento sobre la marcha y luego operando en él como si ya estuviera en el DOM.


jQuery requiere HTML para ejecutarse en modo Estándar o en modo Casi Estándar

Hay problemas conocidos con los métodos de jQuery que no funcionan correctamente cuando un navegador presenta una página HTML en modo peculiar. Asegúrese de utilizar jQuery cuando el navegador interpreta el HTML en modo estándar o en modo casi estándar utilizando un tipo de documento válido..

Para garantizar una funcionalidad adecuada, los ejemplos de código de este libro utilizan el doctype HTML 5.

 

Esperando que el DOM esté listo

jQuery dispara un evento personalizado llamado Listo cuando el DOM está cargado y disponible para la manipulación. El código que manipula el DOM se puede ejecutar en un controlador para este evento. Este es un patrón común visto con el uso de jQuery.

El siguiente ejemplo presenta tres ejemplos codificados de este evento personalizado en uso.

        

Tenga en cuenta que puede adjuntar tantos Listo() Eventos al documento que desee. Usted no está limitado a sólo uno. Se ejecutan en el orden en que fueron agregados..


Ejecutar código jQuery cuando la ventana del navegador está completamente cargada

Típicamente, no queremos esperar a la window.onload evento. Ese es el punto de usar un evento personalizado como Listo() eso ejecutará el código antes de que se cargue la ventana, pero después de que el DOM esté listo para ser atravesado y manipulado.

Sin embargo, a veces realmente queremos esperar. Mientras que la costumbre Listo() El evento es excelente para ejecutar el código una vez que el DOM está disponible, también podemos usar jQuery para ejecutar el código una vez que la página web completa (incluidos todos los recursos) esté completamente cargada.

Esto se puede hacer adjuntando un controlador de eventos de carga a la ventana objeto. jQuery proporciona el carga() método de evento que se puede usar para invocar una función una vez que la ventana está completamente cargada. A continuación, proporciono un ejemplo de la carga() método de evento en uso.

        

Incluir todos los archivos CSS antes de incluir jQuery

A partir de jQuery 1.3, la biblioteca ya no garantiza que todos los archivos CSS se carguen antes de que se active la costumbre Listo() evento. Debido a este cambio en jQuery 1.3, siempre debe incluir todos los archivos CSS antes de cualquier código de jQuery. Esto asegurará que el navegador haya analizado el CSS antes de pasar al JavaScript incluido más adelante en el documento HTML. Por supuesto, las imágenes a las que se hace referencia a través de CSS pueden o no descargarse a medida que el navegador analiza el JavaScript..


Usando una versión alojada de jQuery

Al incrustar jQuery en una página web, la mayoría de las personas optan por descargar el código fuente y vincularlo desde un dominio / host personal. Sin embargo, hay otras opciones que involucran a otra persona que aloja el código jQuery para usted.

Google aloja varias versiones del código fuente de jQuery con la intención de que sea utilizado por cualquier persona. Esto es realmente muy útil. En el ejemplo de código de abajo estoy usando un

Google también aloja varias versiones anteriores del código fuente de jQuery, y para cada versión, se proporcionan variantes minified y no minified. Recomiendo usar la variante no minimizada durante el desarrollo, ya que los errores de depuración siempre son más fáciles cuando se trata de código no minificado.

Un beneficio de usar una versión alojada en Google de jQuery es que es confiable, rápido y potencialmente en caché.


Ejecutando el código jQuery cuando se analiza el DOM sin usar Ready ()

La costumbre Listo() El evento no es del todo necesario. Si su código JavaScript no afecta al DOM, puede incluirlo en cualquier lugar del documento HTML. Esto significa que puedes evitar el Listo() evento en conjunto si su código JavaScript no depende de que el DOM esté intacto.

La mayoría de los JavaScript de hoy en día, especialmente el código jQuery, implicará manipular el DOM. Esto significa que el DOM tiene que ser analizado completamente por el navegador para que usted pueda operar en él. Este hecho es la razón por la cual los desarrolladores han estado atrapados en el window.onload Paseo en montaña rusa desde hace un par de años.

Para evitar el uso del Listo() evento para el código que opera en el DOM, simplemente puede colocar su código en un documento HTML antes del cierre elemento. Al hacerlo, se asegura que el DOM esté completamente cargado, simplemente porque el navegador analizará el documento de arriba a abajo. Si coloca su código JavaScript en el documento después de los elementos DOM que manipula, no es necesario utilizar Listo() evento.

En el siguiente ejemplo, he renunciado al uso de Listo() simplemente colocando mi script antes de que se cierre el cuerpo del documento. Esta es la técnica que utilizo en este libro y en la mayoría de los sitios que construyo.

    

Hola, soy el DOM! Escritura de distancia!

Si tuviera que colocar el


Rompiendo la cadena con métodos destructivos

Como se mencionó anteriormente, no todos los métodos de jQuery mantienen la cadena. Métodos como  texto() se puede encadenar cuando se usa para establecer el nodo de texto de un elemento. sin embargo, texto() en realidad rompe la cadena cuando se usa para obtener el nodo de texto contenido dentro de un elemento.

En el siguiente ejemplo, texto() se utiliza para establecer y luego obtener el texto contenido dentro de la

 elemento.

        

Obteniendo el texto contenido dentro de un elemento usando texto() es un buen ejemplo de una cadena rota porque el método devolverá una cadena que contiene el nodo de texto, pero no el conjunto de envoltura jQuery.

No debería sorprender que si un método jQuery no devuelve el conjunto de envoltura jQuery, la cadena se rompa. Este método se considera destructivo..


Uso de métodos jQuery destructivos y eliminación de la destrucción mediante End ()

Los métodos jQuery que alteran el conjunto de envoltura jQuery original seleccionado se consideran destructivos. La razón es que no mantienen el estado original del conjunto de envoltura. No es para preocuparse; Nada es realmente destruido o eliminado. Más bien, el conjunto de envoltura anterior se adjunta a un nuevo conjunto.

Sin embargo, la diversión con el encadenamiento no tiene que detenerse una vez que se altera el conjunto envuelto original. Utilizando la fin() método, puede retirarse de cualquier cambio destructivo realizado en el conjunto de envoltorio original. Examinar el uso de la fin() Método en el siguiente ejemplo para comprender cómo operar dentro y fuera de los elementos DOM.

     

Aspectos de la función jQuery.

La función jQuery es multifacética. Podemos pasarle diferentes valores y formaciones de cadena que luego puede usar para realizar funciones únicas. Aquí hay varios usos de la función jQuery:

  • Seleccione elementos del DOM usando expresiones CSS y expresiones jQuery personalizadas, así como seleccionando elementos usando referencias DOM: jQuery ('p> a') o jQuery (': first') y jQuery (document.body)
  • Cree HTML sobre la marcha pasando estructuras de cadena HTML o métodos DOM que crean elementos DOM: jQuery ('
    ')
    o jQuery (document.createElement ('div'))
  • Un atajo para el Listo() evento pasando una función a la función jQuery: jQuery (function ($) / * Acceso directo para ready () * /)

Cada uno de estos usos se detalla en el ejemplo de código a continuación..

       

Grokking cuando la palabra clave se refiere a elementos DOM

Al adjuntar eventos a elementos DOM contenidos en un conjunto de envoltorio, la palabra claveesta se puede usar para referirse al elemento DOM actual que invoca el evento. El siguiente ejemplo contiene código jQuery que adjuntará una costumbre mouseenter evento para cada Elemento en la página. El JavaScript nativo ratón sobre el evento se dispara cuando el cursor entra o sale de un elemento secundario, mientras que jQuery mouseenter no.

    jQuery.com jQuery.com jQuery.com    

Dentro de la función anónima que se pasa a la mouseenter () método, utilizamos la palabra clave esta para referirse a la corriente elemento. Cada vez que el mouse toca el texto "jQuery.com", el navegador alertará sobre qué elemento se ha movido hacia atrás identificando su carné de identidad valor de atributo.

En el ejemplo anterior, también es posible tomar el esta haga referencia y pásela a la función jQuery para que el elemento DOM se ajuste con la funcionalidad jQuery.

Así que en lugar de esto:

 // Acceda al atributo ID del elemento DOM. alerta (this.id);

Podríamos haber hecho esto:

 // Envuelva el elemento DOM con un objeto jQuery, // y luego use attr () para acceder al valor de ID. alerta ($ (este) .attr ('id'));

Esto es posible porque la función jQuery no solo toma expresiones de selector, también toma referencias a elementos DOM. En el codigo, esta es una referencia a un elemento DOM.

La razón por la que podría querer envolver la funcionalidad jQuery alrededor de un elemento DOM debería ser obvia. Si lo hace, le ofrece la posibilidad de utilizar el encadenamiento jQuery, en caso de que lo necesite..

Iterar sobre un conjunto de elementos contenidos en el conjunto de envoltura jQuery es algo similar al concepto que acabamos de discutir. Usando el jQuery cada() método, podemos iterar sobre cada elemento DOM contenido en un conjunto de envoltura. Esto permite el acceso a cada elemento DOM individualmente, a través del uso del esta palabra clave.

Sobre la base del marcado en el ejemplo anterior, podemos seleccionar todos Elementos de la página y utilizar el cada() método para iterar sobre cada elemento en el conjunto contenedor, accediendo a su carné de identidad atributo. Aquí hay un ejemplo.

   jQuery.com jQuery.com jQuery.com    

Si tuviera que cargar el HTML en un navegador, éste alertará sobre la carné de identidad valor de cada Elemento en la página. Ya que hay tres En la página, obtienes tres iteraciones a través de cada() Método y tres ventanas de alerta..


Extracción de elementos de un conjunto de envoltorios, usándolos directamente sin jQuery

El hecho de que envuelva la funcionalidad jQuery alrededor de un elemento HTML no significa que pierda el acceso al propio elemento DOM en sí. Siempre puede extraer un elemento del conjunto de envoltura y operar en el elemento a través de JavaScript nativo. Por ejemplo, en el código de abajo estoy configurando el atributo de título de la elemento en la página HTML mediante la manipulación de la propiedad de título nativo de la Elemento DOM.

    jQuery.com    

Como se demostró, jQuery proporciona la práctica obtener() Método para acceder a elementos DOM en un índice específico en el conjunto de envoltura.

Pero hay otra opción aquí. Se puede evitar usar el obtener() Método simplemente usando la notación de matriz de corchete en el objeto jQuery. En el contexto de nuestro ejemplo de código anterior:

Este codigo

 $ ('a'). get (0) .title = 'jQuery.com';

Podría convertirse en esto:

 $ ('a') [0] .title = 'jQuery.com';

Ambos permiten el acceso al elemento DOM real. Personalmente, prefiero la notación de corchete. Es más rápido porque utiliza JavaScript nativo para recuperar el elemento de una matriz, en lugar de pasarlo a un método.

sin embargo, el obtener() El método proporciona una solución elegante para colocar todos los elementos DOM en una matriz nativa. Simplemente llamando al obtener() método sin pasarle un parámetro de índice, el método devolverá todos los elementos DOM en el conjunto de envoltorio en una matriz de JavaScript nativa.

Para demostrar, tomemos obtener() para una prueba de manejo. En el código de abajo, coloco todos los elementos en una matriz. Luego uso la matriz para acceder a la propiedad del título de la tercera Objeto DOM en la página.

    jQuery.com jQuery.com jQuery.com    

Notas: Utilizando obtener() terminará el encadenamiento de jQuery. Tomará el conjunto de envoltura y lo cambiará en una simple matriz de elementos DOM que ya no están envueltos con la funcionalidad jQuery. Por lo tanto, utilizando el .fin() método no puede restaurar el encadenamiento después .obtener().


Comprobando si el conjunto de envoltura está vacío

Antes de comenzar a operar en un conjunto de envoltorios, es lógico verificar que, de hecho, haya seleccionado algo. La solución más sencilla es utilizar un Si Declaración para verificar si el conjunto de envoltura contiene algún elemento DOM.

    jQuery    

La verdad del asunto es la anterior. Si las declaraciones no son totalmente necesarias, porque jQuery fallará en silencio si no se encuentran elementos. Sin embargo, cada método encadenado a cualquier conjunto de envoltura vacío aún se invoca. Así que mientras que en realidad podríamos renunciar al uso de la Si declaraciones, es probable que sea una buena regla general para usarlos. La invocación de métodos en un conjunto de envoltorios vacío podría causar un procesamiento innecesario, así como resultados indeseables si los métodos devuelven valores distintos al conjunto de envoltorios, y se actúa sobre ellos..


Creando un alias cambiando el nombre del objeto jQuery

jQuery proporciona el no conflicto() método que tiene varios usos, a saber, la capacidad de reemplazar PS con otro alias. Esto puede ser útil de tres maneras: puede renunciar al uso del PS iniciar sesión en otra biblioteca, ayudar a evitar posibles conflictos y proporcionar la posibilidad de personalizar el espacio de nombres / alias para el objeto jQuery.

Por ejemplo, digamos que está creando una aplicación web para la empresa XYZ. Puede ser bueno personalizar jQuery para que en lugar de tener que usar jQuery ('div'). show () o $ ('div'). show () podrías usar XYZ ('div'). Show () en lugar.

    
Syncfusion., Inc.

Notas:Pasando el no conflicto() Si se cumple un valor booleano verdadero, puede deshacer completamente lo que jQuery ha introducido en la página web. Esto solo debe usarse en casos extremos porque, muy probablemente, causará problemas con los complementos de jQuery.


Usar .each () cuando la iteración implícita no es suficiente

Con suerte, es obvio que si tiene una página HTML (ejemplo abajo) con tres vacíos

elementos, la siguiente declaración de jQuery seleccionará los tres elementos de la página, recorrerá los tres elementos (iteración implícita) e insertará el texto "Soy un div" en los tres
elementos.

    

Esto se considera iteración implícita porque el código jQuery asume que le gustaría manipular los tres elementos, lo que requiere iterar sobre los elementos seleccionados y establecer el valor del nodo de texto de cada uno

Con el texto "Soy un div". Cuando esto se hace de forma predeterminada, se le conoce como iteración implícita.

Esto es bastante práctico. En su mayor parte, la mayoría de los métodos de jQuery aplicarán la iteración implícita. Sin embargo, otros métodos solo se aplicarán al primer elemento del conjunto de envoltura. Por ejemplo, el método jQuery. attr () solo accederá al primer elemento del conjunto de envoltura cuando se use para obtener un valor de atributo.

Notas:Al usar el attr () método para establecer un atributo, jQuery aplicará realmente una iteración implícita para establecer el atributo y su valor en todos los elementos del conjunto de envoltura.

En el código de abajo, el conjunto contenedor contiene todos

elementos en la página, pero el attr () método solo devuelve el carné de identidad Valor del primer elemento contenido en el conjunto contenedor..

    
Soy un div
Soy un div
Soy un div

Por el bien de la demostración, asuma que su objetivo es en realidad obtener el carné de identidad Valor de atributo para cada elemento en la página. Podrías escribir tres sentencias jQuery separadas accediendo a cada una

elementos carné de identidad valor de atributo. Si tuviéramos que hacer eso, podría ser algo como esto:

 $ ('# div1'). attr ('id'); $ ('# div2'). attr ('id'); $ ('# div3'). attr ('id'); // o var $ divs = $ ('div'); // Consulta en caché $ divs.eq (0) .attr ('id'); // Comience con 0 en lugar de 1 $ divs.eq (1) .attr ('id'); $ divs.eq (2) .attr ('id');

Eso parece un poco detallado, ¿no? ¿No sería bueno si pudiéramos recorrer el conjunto de envoltorios y simplemente extraer el carné de identidad valor de atributo de cada uno de los

¿elementos? Utilizando el $ (). cada () método, invocamos otra ronda de iteración cuando nuestro conjunto de envoltura requiere una iteración explícita para manejar múltiples elementos.

En el ejemplo de código de abajo, uso el $ (). cada () método para recorrer el conjunto de envoltorio, acceder a cada elemento del conjunto y luego extraer su carné de identidad valor de atributo.

    
div1
div2
div3

Imagine las posibilidades que tiene ante usted con la capacidad de aplicar la iteración en el momento que lo desee..

Notas: jQuery también proporciona una $. cada función, no debe confundirse con el $ (). cada uno Método, que se utiliza específicamente para iterar sobre un conjunto de envoltura jQuery. los $. cada El método puede usarse para iterar sobre cualquier objeto u matriz de JavaScript antiguo. Es esencialmente un subsitute para bucles nativos de JavaScript.


Elementos en jQuery Wrapper Set devueltos en orden de documentos

El motor del selector devolverá los resultados en el orden del documento en lugar del orden en que se pasaron los selectores. El conjunto de envoltura se completará con los elementos seleccionados en función del orden en que cada elemento aparece en el documento, de arriba a abajo..

    

h1

h2

h3


Determinación del contexto utilizado por la función jQuery

El contexto predeterminado utilizado por la función jQuery al seleccionar elementos DOM es el elemento del documento (por ejemplo,. $ ('a', documento)). Esto significa que si no proporciona la función jQuery (por ejemplo,. jQuery ()) con un segundo parámetro que se utilizará como contexto para la consulta DOM, el contexto predeterminado utilizado es el elemento del documento, más conocido como .

Es posible determinar el contexto en el que la función jQuery está realizando una consulta DOM utilizando el contexto propiedad. A continuación muestro dos ejemplos codificados de recuperación del valor de la propiedad de contexto.

    
jQuery

Creación de toda la estructura DOM, incluidos los eventos DOM, en una sola cadena

Al aprovechar los métodos de encadenamiento y jQuery, puede crear no solo un elemento DOM único, sino estructuras DOM completas. A continuación, creo una lista desordenada de enlaces jQuery que luego agrego al DOM.

       

El concepto que necesita quitar del ejemplo anterior es que jQuery se puede usar para diseñar y operar estructuras DOM complejas. Usando solo los métodos de jQuery, puede preparar casi cualquier estructura DOM que pueda necesitar.