jQuery sucintamente Eventos y jQuery

No limitado a un solo evento listo ()

Es importante tener en cuenta que puede declarar tantos personalizados Listo() Eventos como quieras. Usted no está limitado a adjuntar una sola .Listo() Evento al documento. los Listo() Los eventos se ejecutan en el orden en que están incluidos..

Notas: Pasando la función jQuery, una función - por ejemplo,. jQuery (funciton () // code here) - es un atajo para jQuery (documento) .ready ().


Adjuntar / Eliminar eventos usando bind () y unbind ()

Utilizando la enlazar() método - por ejemplo. jQuery ('a'). bind ('clic', function () ) - puede agregar cualquiera de los siguientes controladores estándar a los elementos DOM apropiados.

  • difuminar
  • atención
  • carga
  • redimensionar
  • voluta
  • descargar
  • antes de descargar
  • hacer clic
  • hacer doble clic
  • ratón hacia abajo
  • mouseup
  • movimiento del ratón
  • ratón sobre
  • mouseout
  • cambio
  • seleccionar
  • enviar
  • keydown
  • pulsación de tecla
  • tecla Arriba
  • error

Obviamente, según los estándares DOM, solo ciertos manejadores coinciden con elementos particulares.

Además de esta lista de controladores estándar, también puede aprovechar enlazar() para adjuntar controladores personalizados jQuery - por ejemplo,. mouseenter y mouseleave - así como cualquier controlador personalizado que pueda crear.

Para eliminar controladores estándar o controladores personalizados, simplemente pasamos el desatar() método el nombre del controlador o el nombre del controlador personalizado que se debe eliminar, por ejemplo,. jQuery ('a'). Desvincular ('clic'). Si no se pasan parámetros a desatar(), Se eliminarán todos los controladores adjuntos a un elemento..

Estos conceptos que acabamos de discutir se expresan en el ejemplo de código a continuación..

     

Notas: jQuery proporciona varios accesos directos a la enlazar() Método para usar con todos los eventos DOM estándar, que excluye eventos jQuery personalizados como mouseenter y mouseleave. El uso de estos accesos directos simplemente implica sustituir el nombre del evento como el nombre del método, por ejemplo,. .hacer clic(), mouseout (), atención().

Puede adjuntar manejadores ilimitados a un solo elemento DOM usando jQuery.

jQuery proporciona el uno() método de manejo de eventos para vincular convenientemente un evento a elementos DOM que se ejecutarán una vez y luego se eliminarán. los uno() El método es sólo un envoltorio para enlazar() y desatar().


Invocar un controlador específico mediante métodos de evento corto mediante programación

La sintaxis de acceso directo - por ejemplo,. .hacer clic(), mouseout (), y atención() - para vincular un controlador de eventos a un elemento DOM también se puede utilizar para invocar controladores de manera programática. Para hacer esto, simplemente use el método de evento de acceso directo sin pasarle una función. En teoría, esto significa que podemos vincular un controlador a un elemento DOM y luego invocarlo inmediatamente. A continuación, demuestro esto a través de la hacer clic() evento.

    Di hola  Di hola     

Notas: También es posible utilizar el evento. desencadenar() método para invocar controladores específicos, por ejemplo,. jQuery ('a'). click (función () alert ('hi')). trigger ('click'). Esto también funcionará con espacios de nombre y eventos personalizados.


jQuery normaliza el objeto de evento

jQuery normaliza el objeto de evento de acuerdo con los estándares W3C. Esto significa que cuando el objeto de evento se pasa a un controlador de funciones, no tiene que preocuparse por las implementaciones específicas del navegador del objeto de evento (por ejemplo, Internet Explorer). evento de ventana). Puede usar los siguientes atributos y métodos del objeto de evento sin preocuparse de las diferencias del navegador porque jQuery normaliza el objeto de evento.

Atributos de objeto de evento

  • tipo de evento
  • event.target
  • event.data
  • event.relatedTarget
  • event.currentTarget
  • evento.pageX
  • evento.páginaY
  • evento.resultado
  • event.timeStamp

Métodos de objeto de evento

  • event.preventDefault ()
  • event.isDefaultPrevented ()
  • event.stopPropagation ()
  • event.isPropagationStopped ()
  • event.stopImmediatePropagation ()
  • event.isImmediatePropagationStopped ()

Para acceder al objeto de evento jQuery normalizado, simplemente pase la función anónima, pase a un método de evento jQuery, un parámetro llamado "evento" (o como quiera que lo llame). Luego, dentro de la función de devolución de llamada anónima, use el parámetro para acceder al objeto de evento. A continuación se muestra un ejemplo codificado de este concepto..

       

Espaciado de nombres de eventos

A menudo tendremos un objeto en el DOM que necesita tener varias funciones vinculadas a un solo controlador de eventos. Por ejemplo, tomemos el controlador de cambio de tamaño. Usando jQuery, podemos agregar tantas funciones a la window.resize manejador como nos gusta. Pero, ¿qué sucede cuando necesitamos eliminar solo una de estas funciones pero no todas? Si usamos $ (ventana) .unbind ('redimensionar'), todas las funciones adjuntas a la window.resize Se eliminará el controlador. Al poner nombre a un controlador (por ejemplo,. resize.unique), podemos asignar un enlace único a una función específica para su eliminación.

       

En el código anterior, agregamos dos funciones al controlador de cambio de tamaño. El segundo evento de cambio de tamaño (orden de documentos) agregado usa espacios de nombres y luego elimina inmediatamente este evento usando desatar(). Hice esto para señalar que la primera función adjunta no se elimina. Los eventos de espacios de nombres nos permiten etiquetar y eliminar funciones únicas asignadas al mismo controlador en un solo elemento DOM.

Además de desvincular una función específica asociada con un único elemento DOM y un controlador, también podemos usar el espacio de nombres de eventos para invocar exclusivamente (usando desencadenar()) un controlador específico y una función asociada a un elemento DOM. En el código de abajo, se agregan dos eventos de clic a , y luego usando espacios de nombres, solo se invoca uno.

    hacer clic    

Notas: No hay límite para la profundidad o el número de espacios de nombres utilizados, por ejemplo,. resize.layout.headerFooterContent.

El espacio de nombres es una excelente manera de proteger, invocar y eliminar cualquier controlador exclusivo que pueda requerir un complemento.

El espacio de nombres funciona con eventos personalizados y eventos estándar, por ejemplo,. click.unique o myclick.unique.


Delegación de eventos de Grokking

La delegación de eventos se basa en la propagación de eventos (a.k.a. bubbling). Cuando haces clic en un dentro de un

  • , que está dentro de un