{"id":25793,"library":"jquery-events-to-dom-events","title":"jquery-events-to-dom-events","description":"A tiny zero-dependency library (30 LOC) that bridges jQuery custom events to DOM CustomEvents, enabling vanilla JS listeners for jQuery-triggered events. Version 1.1.0, maintained but low release cadence. Key differentiator: works without refactoring existing jQuery code, designed for StimulusJS and Turbolinks, bidirectional (also forwards DOM events to jQuery). Requires jQuery loaded globally as window.$.","status":"active","version":"1.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/leastbad/jquery-events-to-dom-events","tags":["javascript","stimulusjs","events","jquery","DOM","mutation-first"],"install":[{"cmd":"npm install jquery-events-to-dom-events","lang":"bash","label":"npm"},{"cmd":"yarn add jquery-events-to-dom-events","lang":"bash","label":"yarn"},{"cmd":"pnpm add jquery-events-to-dom-events","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"ESM-only; using require might not work depending on bundler configuration.","wrong":"const delegate = require('jquery-events-to-dom-events').delegate","symbol":"delegate","correct":"import { delegate } from 'jquery-events-to-dom-events'"},{"note":"The library exports 'undel', not 'undelegate'.","wrong":"import { undelegate } from 'jquery-events-to-dom-events'","symbol":"undel","correct":"import { undel } from 'jquery-events-to-dom-events'"},{"note":"No default export; use namespace import.","wrong":"import jqueryEventsToDomEvents from 'jquery-events-to-dom-events'","symbol":"default","correct":"import * as jqueryEventsToDomEvents from 'jquery-events-to-dom-events'"}],"quickstart":{"code":"import { delegate, undel } from 'jquery-events-to-dom-events';\n// Set up event delegation for a jQuery custom event\ndelegate('my.custom.event');\n// Listen for the DOM version (prefixed with $)\ndocument.addEventListener('$my.custom.event', (e) => {\n  console.log('Received:', e.detail);\n});\n// Later, to stop delegation:\n// undel('my.custom.event');\n// If jQuery is not already global, ensure it is:\n// window.$ = window.jQuery = require('jquery');","lang":"javascript","description":"Shows how to delegate a jQuery event to a DOM CustomEvent and listen for it."},"warnings":[{"fix":"Ensure jQuery is loaded and assigned to window.$ before importing the library.","message":"Requires jQuery to be available globally as window.$. If not set, library fails silently.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Always prepend '$' to the jQuery event name when using addEventListener.","message":"DOM event names are prefixed with a dollar sign ($). Forgetting the prefix causes the listener to never fire.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use only for jQuery custom events (e.g., 'hidden.bs.modal'). For native events, attach listeners directly.","message":"Only works with custom jQuery events triggered via $.trigger, not native browser events (e.g., 'click').","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Call undel() when the component disconnects (e.g., in Stimulus disconnect or useEffect cleanup).","message":"Library does not clean up event listeners unless undel is called. Delegation persists across page navigations (e.g., Turbolinks).","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Ensure jQuery is loaded and available as window.$ before using this library.","cause":"jQuery is not loaded or window.$ is undefined when delegate is called.","error":"Uncaught TypeError: Cannot read properties of null (reading 'split')"},{"fix":"Use document.addEventListener('$my.custom.event', handler) instead.","cause":"DOM event names must be prefixed with '$'.","error":"document.addEventListener('my.custom.event', handler) not firing"},{"fix":"Use import syntax: import { delegate } from 'jquery-events-to-dom-events'","cause":"Library is ESM-only, not compatible with CommonJS require().","error":"Cannot find module 'jquery-events-to-dom-events' when using require()"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}