jQuery 4 є системою опису подій у фонді

Останнє оновлення: 04/23/2026
Автор: C SourceTrail
  • jQuery 4 відповідає системі подій із сучасними новинами, увімкнувши .on() як центральний API і переформатувавши попереджувальну інформацію про події.
  • La delegatión de eventos y el uso de selectores simples siguen siendo claves para el rendimiento, especialmente en interfaces extensas o dinámicas.
  • Підтримка Trusted Types y CSP має jQuery 4, який є кращим із вимогами безпеки, якщо відмовитися від ергономіки.
  • Параметри існуючих додатків, домінування нової моделі подій jQuery 4 дозволяють модернізувати без переписаних масів, миентрасів, які створюють нові проекти, доступні в рідних API.

Система подій jQuery 4

jQuery 4 llega con un system de eventos mucho más alineado con los estándares modernos del navegador, pero sin renunciar a la filosofía clásica de la librería: пиши менше, роби більше. Якщо mantienes aplicaciones con bastante código jQuery, entender bien cómo han evolucionado los eventos es clave para que tus інтерфейси sigan siendo rápidas, predecibles y fáciles de depurar.

У фонді система подій jQuery 4 не є простим інструментом addEventListener, sino una capa que normaliza comportamientos entre navegadores, refuerza la seguridad, mantiene un orden de ejecución claro y ofrece herramientas potentes como la delegación de eventos y la integración con APIs modernas del navegador. Vamos a desgranar todo esto con calma, desde la base de los eventos en JavaScript hasta lo que realmente cambia en esta versión.

властивість css touch-action
Пов'язана стаття:
Propiedad CSS touch-action: cómo domar gestos táctiles con precisión

JavaScript como linguaje dirigido por eventos

JavaScript se ejecuta en un único hilo, pero el entorno del navegador está completamente dominado por eventos: clics de ratón, movimientos, pulsaciones de teclado, carga de recursos, cambios en formularios тощо. Cada una de estas acciones genera una señal discreta asociada a un nodo concreto del DOM.

Un evento no es algo global que ocurre en toda la interfaz, sino que se dispara siempre sobre un elemento specífico. Un clic sobre un botón dispara un evento click sobre ese botón, no sobre el documento entero. A ese evento puedes asociar una función manejadora (обробник подій) que se ejecutará cuando el navegador processe ese suceso.

Como el motor de JavaScript solo process una instrucción a la vez, hace falta una cola de tareas para coordinar los eventos. Cuando ocurre algo interesante —por ejemplo, el usuario pulsa una tecla— el navegador coloca ese evento en una dispatch queue (cola de despacho). En cuanto la pila de llamadas queda libre, el motor toma el siguiente evento de la cola, ejecuta el manejador asociado hasta el final y solo entonces vuelve a mirar si hay más eventos pendientes.

Un detalle sutil pero importante es que un evento solo entra en la cola si existe al menos un manejador registerado para él. Si no hay nadie escuchando, el navegador simplemente desecha el suceso. Esto explica por qué una interfaz puede parecer “muerta” si olvidamos registrar un listener para la interacción que esperamos.

De esta arquitectura deriva la llamada “regla de la capacidad de respuesta”: como el hilo principal está ocupado mientras corre tu manejador, si este tarda demasiado, todo el sitio parece congelado. Las animaciones se paran, los clics parecen no responder y la experiencia de usuario cae en picado.

La estrategia correcta en JavaScript es hacer que cada manejador haga el menor trabajo posible y devuelva el control cuanto antes. Si necesitas mucho tiempo de CPU (por ejemplo, para processar un set de datos grande), conviene trocear el trabajo en tareas pequeñas —de decenas de milisegundos— y distribuirlas con setTimeout, requestAnimationFrame або Workers, de forma que el navegador pueda processar otros eventos entre medias.

Події в чистому HTML і addEventListener

Делегування подій у jQuery 4

Перед тим, як використовувати порт jQuery 4, можна відновити, щоб мати змогу керувати подіями з нативним JavaScript. HTML дозволяє визначати керування й атрибути на*, як onclick=”miFuncion()” у боці, так як це наближена мережева структура (HTML) із вмістом (JS) і мається на увазі складний код користувача.

Сучасна форма дозволяє використовувати addEventListener безпосередньо для вузлів DOM. Наприклад, botón puede реєстратор varios manejadores para el mismo tipo de evento:

У цій моделі основний аргумент addEventListener є типовою подією як cadena — клацання, наведення курсора, натискання клавіш тощо — y el segundo es una referencecia a la función. Según la especificación, si registras varios listeners, deberían ejecutarse en el orden en que se añadieron, aunque en entornos antiguos no siempre ha sido fiable fiarse de ese matiz para lógica rítica.

Otra ventaja del API nativo es que puedes adjuntar más de un manejador al mismo origen de evento. Es totalmente válido tener una función para guardar datos y otra independiente para registrar analíticas, ambas disparadas por el mismo clic. Esto ayuda a separar responsabilidades sin acoplar funcionalidades que no tienen por qué estar mezcladas.

El problema histórico es que no todos los navegadores implementaban los eventos exactamente igual. Internet Explorer заборонено використовувати attachEvent у програмі addEventListener, інші події не підлягають зміні, а також деталі, як порядок фокусування та розмиття. Este caos de compatibilidad es una de las razones por las que jQuery se hizo tan popular: ofrecía una capa uniforme por encima de todas esas rarezas.

Система подій jQuery та метод .on()

Після jQuery 1.7 і консолідації в jQuery 4, коразон системи подій бібліотеки з методом .on(). Існують такі функції, як click(), hover() або bind(), por.

.on() приймає різні комбінації аргументів, які дозволяють простий швидкий сценарій повних сценаріївНайбазовіший патрон:

En esta firma, el primer parametro es un string con uno o varios tipos de evento separados por espacios, el segundo es el manejador. jQuery викликає цю функцію, щоб виконати дію, яка виконується у вибраних елементах.

La verdadera potencia de .on() aparece cuando añadimos un selector intermedio para hacer delegation de eventos. En ese caso, la forma general es:

Cuando usamos esta variante, el manejador no se adjunta directamente a cada elemento hijo, sino a un ancestro común. jQuery підтверджує витікаючий DOM: подія, яка виникає в елементі об’єкта, виникла через sus padres y, якщо вузол додався hizo .on(), якщо event.target збігається з делегованим селектором. Якщо збігаються, викидається обробник.

Además, .on() puede recibir un objeto donde las claves son cadenas de eventos y los valores son funciones. Esto permite реєстратору varios listeners de una sola vez sobre los mismos elementos, manteniendo el código más compacto y expresivo.

Este diseño tiene otra cara interesante: puedes pasar datos estáticos en el registro del evento usando el parametro data. jQuery encapsula esa información en event.data cada vez que dispara el manejador, lo que facilita reutilizar una misma función con conportamientos ligeramente distintos sin tener que crear cierres ad hoc.

Об’єкт події jQuery та керування потоком

Siempre que jQuery ejecuta un manejador, le pasa como argumento un objecto de evento propio que normalize las diferencias entre navegadores. Цей об’єкт включає важливу інформацію: тип події в event.type, джерело елемента в event.target і посилання на вихідну подію в event.originalEvent.

De manera predeterminada, la mayoría de los eventos del DOM se propagan hacia arriba desde el elemento original hasta document. En cada paso, jQuery comprueba qué manejadores coinciden y los ejecuta en el orden en que fueron registerados. Este comportamiento hace posible tanto la delegation como la composición de funcionalidades sobre el mismo suceso.

Якщо ви хочете визначити розповсюдження для події, яка не підпорядкована DOM-архіву, натисніть event.stopPropagation(). Con esto, evitas que otros elementos ancestro reciban la notificación y actúen en consecuencia, algo muy útil cuando no deseas que la lógica genérica del contenedor se aplique en un caso particular.

Перейдіть на другий рівень керування з event.stopImmediatePropagation(). Además de frenar el bubbling, esta llamada impide que se ejecuten otros manejadores del mismo tipo registrados en el mismo elemento. Es una medida más drástica para garantizar que ninguna otra función interfiera en un flujo crítico.

Для іншої події event.preventDefault() скасовує дію через дефект асоціації події. Por ejemplo, evita que un enlace navegue a tra URL o que un formulario se envíe. Esta técnica es fundamental en patrones como el envío por AJAX, donde queeres capturar el submit, anular el comportamiento estándar y lanzar tu propia petición asíncrona.

Un atajo clásico de jQuery es devolver false desde el manejador. Ця деволюція еквівалентна виклику preventDefault() як stopPropagation(), поєднавши скасування дії через дефект із блоком розповсюдження. Es cómodo, pero conviene usarlo solo cuando realmente necesitas las dos cosas a la vez.

En el contexto de jQuery, la palabra clave this dentro del manejador apunta al elemento al que se le está entregando el evento en ese momento. En eventos directos, suele ser el nodo en el que se registró el listener; en delegados, será un elemento que cincide con el selector delegato, que puede no coincidir con event.target si el suceso burbujeó desde un descendiente profundo.

Pasar datos a los manejadores y reutilizarlos

jQuery дозволяє отримувати інформацію про подію, доповнювати довільні дані в реєстрі з .on(). Якщо дані параметра містяться без значення null як undefined, jQuery вставляється в event.data, коли обробник викидається.

La recomendación habitual es utilizar un objeto plano como contenedor, por ejemplo { action: “save”, tracking: true }, ya que te permite agrupar varios valores bajo un mismo parametro y acceder a ellos por propiedades. Esto hace el código más readible que pasar una simple cadena.

Від попередніх версій jQuery 4, ми не можемо керувати різними варіантами версій іншого елемента. Cada vínculo puede llevar su propio paquete de event.data, de modo que la misma función actúa de forma ligeramente distinta según el contexto con el que se registró. Es una manera elegante de aplicar el principio DRY en la lógica de eventos.

Además de los datos estáticos, jQuery ofrece otro canal para pasar información dinámica al disparar eventos de forma manual. Методи .trigger() і .triggerHandler() приймають другий аргумент, який може використовувати простий чи масив; jQuery перетворює цю доблесть у елемент масиву та додаткові параметри управління, що відсутнє від об’єкта події.

Поєднання event.data і аргументів .trigger() забезпечує дуже гнучку систему для побудови API внутрішніх баз і подій. Ви можете використовувати event.data для конфігурації файлу слухача та додаткових параметрів для змінних даних у програмному виклику.

Delegación de eventos: rendimiento y escalabilidad

Una de las técnicas más poderosas del system de eventos de jQuery es la delegation, que se apoya directamente en el bubbling del DOM. En lugar de adjuntar un listener a cada elemento potencijalmente interactivo, lo registras una sola vez en un contenedor común y dejas que el evento ascienda hasta él.

Este patrón brilla en estructuras grandes o dinámicas. Imagina una tabla con mil celdas: реєстратор mil handlers individuales para gestionar un clic en cada una es una sobrecarga notable, tanto por memoria como por trabajo de comparación al dispararse los eventos. En cambio, si colocas un solo listener en la tabla o en el tbody y filtras por el selector adecuado, зменшує drásticamente el coste.

La delegation también simplifica la interacción contenido que se genera or modifica vía AJAX. Si añades nuevas filas a la tabla después de cargar la página, no necesitas volver a recorrer el DOM para adjuntar manejadores a cada celda recién creada: el listener delegato seguirá funcionando porque escucha en el ancestro, no en los nodos concretos.

Eso sí, para mantener un rendimiento óptimo conviene seleccionar con cuidado el punto donde se adjunta el evento delegato. Cuanto más arriba en el árbol apeles, más largo será el camino de burbujeo y mayor el número de comparaciones de selectores que jQuery debe hacer. En documentos grandes, usar document o body como delegados universales puede ser costoso para sucesos de alta frecuencia.

У термінах селекторів процес jQuery дуже швидкий під захистом простих тегів форми#id.class. Expresiones como #myForm, a.external o button se evaluan con mucha efficiencia. En cambio, selectores jerárquicos complejos —por ejemplo, combinaciones profundas de descendientes— pueden ser varias veces más lentos, aunque en la mayoría de aplicaciones siguen siendo perfectamente utilizables.

Hay que tener en cuenta también que no todos los eventos son aptos para delegación. Algunos, como load, scroll o error en imágenes, no burbujean en los navegadores, y por tanto solo funcionan si los adjuntas directamente al elemento origen. jQuery представляє eventos como focusin y focusout para ofrecer alternatives que sí burbujean a focus y blur, pero hay categorías —por ejemplo, ciertos eventos de formulario en IE antiguos— donde la delegation tiene limitaciones históricas.

Rendimiento de eventos en jQuery 4

En la mayoría de casos, eventos como click o change ocurren con poca frecuencia, de modo que el rendimiento no suele ser un problema. Sin embargo, existen tipos muy ruidosos —mousemove, scroll, resize— que pueden dispararse docenas de veces por segundo, y ahí sí merece la pena ser cuidadoso con la cantidad y el coste de tus manejadores.

La primera regla para estos eventos de alta frecuencia es minimizar el trabajo del callback. Conviene precalcular y cachear valores que se repitan mucho, limitar las operaciones sobre el DOM y, cuando sea necesario, introducir técnicas de throttling or debouncing con setTimeout, requestAnimationFrame o librerías auxiliares, y controlar el comportamiento del scroll con la властивість переповнення CSS.

Un segundo aspecto a vigilar es el número de manejadores delegatos registerados cerca de la raíz del documento. Cada vez que se dispara un evento, jQuery tiene que recuperar todos los listeners potenciales para ese tipo, recorrer la cadena de ascendencia desde el target hasta el nodo raíz y comprobar los selectores asociados. Un exceso de handlers genericos anclados en document puede convertirse en un cuello de botella.

La solución pasa por anclar la delegation lo más cerca posible de los elementos objetivo. Si sabes que solo te interesan eventos en un formulario concreto, es mejor delegar en ese formulario que en body. De esta manera, el número de elementos por los que burbujea el evento es menor y el coste de evaluación se reduce.

jQuery 4 описує філософію прискорення використання селекторів і делегування. Cuando encaja, un selector como button dentro de un contenedor específico será notablemente más eficiente que expresiones profundamente anidadas. A menudo basta con replantear dónde colocas el listener para simplificar mucho el selector necesario.

Compatibilidad de eventos, casos especiales y notas importantes

Система подій jQuery підтримує асоційовані метадані, що містяться в елементах DOM. Esto permite a la librería llevar un registro detallado de qué manejadores están adjuntos a cada nodo, gestionar namespaces, soportar .off() de forma precisa тощо. Sin embargo, algunos elementos —como object, embed y applet— no admiten adjuntar datos de la forma que jQuery необхідний, якщо бібліотека не може розширювати події в інших місцях.

Existen también particularidades con ciertos tipos de evento según el navegador. En todos, load, scroll y error enágenes no burbujean, así que no podrás delegarlos; en Internet Explorer 8 y anteriores, tampoco lo hacían paste ni reset. Aunque jQuery intenta proporcionar alternatives compatibles, estos limites del modelo de eventos del navegador siguen estando ahí.

Un caso conocido es window.onerror, cuyo contrato de argumentos y valor de retorno es diferente al de los eventos estándar. Пор eso jQuery не містить абстракційних даних системи й рекомендацій, які призначають ель-манежадор, який безпосередньо керує властивістю window.onerror, коли необхідно зафіксувати глобальні помилки.

Otro matiz importante es que la lista de manejadores que se usarán para un elemento se fija en el momento en que el evento comienza a procesarse. Якщо функція зворотного виклику є .off() для виходу з прослуховувача, вона не впливає на обробники програм для фактичного виведення: eliminación surtirá efecto solo en invocaciones futuras. Щоб створити резервну копію зворотних викликів у різних елементах і типі подій у фактичному циклі, потрібно stopImmediatePropagation().

У терміналі API, jQuery має депрекандовані файли, якщо псевдо-подія “hover” використовується як псевдонім mouseenter і mouseleave. Попередні версії можна використати як групову назву «hover», але це може призвести до плутанини з методом .hover(). У jQuery 4 використовується експліцитне використання mouseenter і mouseleave або методу .hover() із функціями цих функцій.

Ця подія реалізована в jQuery 4

jQuery 4 marka un punto de inflexión porque reduce su dependencia de comportamientos heredados de navegadores antiguos. A nivel de eventos, esto se traduce en que el modelo sigue siendo familiar pero se ajusta más restrictamente a las especificaciones actuales del DOM.

Uno de los cambios más sutiles tiene que ver con el orden y el manejo de eventos de enfoque, como focus, blur, focusin y focusout. Históricamente, jQuery applicaba normalizaciones para lograr resultados contentes incluso en navegadores con implementaciones speculiares. En la version 4 la librería se alinea más con el estándar W3C, por lo que código que dependía de las viejas particularidades podría comportarse de forma diferente.

Otro aspecto clave es el recorte de soporte para navegadores legacy. jQuery 4 підтримує Internet Explorer 10, Edge Legacy та інші старі, концентровані та сучасні базові версії. IE11 aún figura como soportado, pero todo apunta a que es un soporte de transición. Al desaparecer la necesidad de workarounds para esas plataformas, el nucleo de eventos puede ser más ligero y directo.

Esta limpieza va acompañada de una modernización interna del código. La librería accepta patrones más cercanos al JavaScript actual, con empaquetados mejor integrados en herramientas como Vite, Rollup or webpack. Aunque esto no cambia directamente cómo llamas a .on() або .off(), sí afecta a cómo se resuelve jQuery en entornos modulares y bundlers modernos.

У тонкій збірці jQuery 4 записано більше. Se han eliminado Deferreds y Callbacks en favor de usar las Promises nativas de JavaScript, lo que encaja mejor con el el cosistema actual. Aunque esto afecta sobre todo a la parte de asincronía y AJAX, también limpia fragmentos de código histórico que interactuaban con eventos de forma indirecta.

Este alineamiento con los estándares también refuerza la previsibilidad del sistema de eventos. En lugar de mantener comportamientos no estándar por compatibilidad con navegadores ya obsoletos, jQuery 4 apuesta por respetar la semántica definida por el W3C, lo que facilita razonar sobre el flujo de eventos, la propagación y el orden de ejecución cuando combinas jQuery з нативними сучасними API.

Безпека, довірені типи та контекст подій

Великі передові переваги jQuery 4 está en el terreno de la seguridad, specicialmente en relación con Content Security Policy (CSP) і Trusted Types. Aunque esto no parezca directamente ligado a los eventos, la forma en que la librería interactúa con el DOM y el código dinámico sí influye en la superficie de ataque.

Trusted Types — це технологія, яка створює складні атаки міжсайтового сценарію (XSS) обов’язково, щоб ці ciertos contextos sensibles (por ejemplo, asignar innerHTML) reciban objectos specialmente marcados como seguros. jQuery 4 включає в себе підтримку для цього механізму, оскільки це полегшує інтеграцію в додатки, що застосовуються в обмеженій політиці CSP.

Al alinear sus operaciones con Trusted Types y CSP, jQuery зменшує situaciones en las que un simple manejador de eventos podría terminar introduciendo contenido inseguro sin que te des cuenta. Esto no elimina la necesidad de validar y sanear datos, pero hace que la librería se comporte de forma más predecible en entornos donde la seguridad es una prioridad.

Desde el punto de vista del desarrollador de frontend, esto significa que muchos patrones clásicos basados ​​en jQuery siguen siendo válidos en aplicaciones endurecidas, siempre que actualices a la version 4 y adaptes las partes que dependan de deprecadas APIs. En torno a los eventos, esto se traduce en poder seguir utilizando .on(), delegation y disparos programáticos sin chocar con las protecciones modernas del navegador.

jQuery 4 часто використовує нативний JavaScript у режимі подій

Сучасні API-інтерфейси навігатора —querySelector, addEventListener, fetch, classList.. Técnicamente, puedes replicar la mayor parte de lo que hace el system de eventos de la librería usando solo JavaScript nativo, y en proyectos nuevos suele ser la opción más razonable.

Sin embargo, en aplicaciones existentes con mucho código jQuery, la historia es distinta. Migrar de golpe todo un system de eventos que depende de .on(), delegaciones, plugins y utilidades specíficas puede ser caro y arriesgado. jQuery 4 ofrece la posibilidad de modernizar la base sin tener que reescribir de cero el modelo de interacción.

En proyectos greenfield or modernos frameworks, añadir jQuery solo para manejar eventos suele ser innecesario. La combinación de addEventListener con patrones como delegation manual y utilidades ligeras de terceros cubre casi todos los casos, con un poco menos de magia y más control explícito.

La decisión pragmática suele ser mantener jQuery allí donde ya está profundamente integrado —por ejemplo, en CMS como WordPress o en aplicaciones empresariales enormes— y escribir código nuevo nativo o con frameworks donde no haya dependencia heredada. У цьому комбінованому сценарії jQuery 4 actúa como puente entre el pasado y el presente del ecosistema web.

Para quienes gestionan bases de código maduras, comprender a fondo el system de eventos de jQuery 4 es una inversión útil: te permite extraer el máximo partido a lo que ya está escrito, aplicar mejoras de rendimiento y seguridad, y planificar una posible migración progresiva a APIs nativas sin tener que improvisar soluciones a cada paso.

В останньому екземплярі jQuery 4 об’єднано в систему подій, які поєднують сумісність, прозорість і підпорядкування з рештою. Si sabes aprovechar bien(), la delegation, el control preciso de propagación y las mejoras en seguridad, puedes seguir desarrollando y manteniendo інтерфейси basadas en jQuery con plena vigencia en el contexto del frontend actual.

Схожі повідомлення: