Skip to content

Instantly share code, notes, and snippets.

@vielhuber
Last active October 8, 2021 09:00
Show Gist options
  • Save vielhuber/d35c23821164cbe64a509d94ce0df8be to your computer and use it in GitHub Desktop.
Save vielhuber/d35c23821164cbe64a509d94ce0df8be to your computer and use it in GitHub Desktop.
custom events manually fire/trigger change event jquery vs. vanillajs dispatchEvent #js
setTimeout(() => { document.querySelector('.foo').dispatchEvent(new Event('change', { 'bubbles': true })); }, 3000);
document.addEventListener('change', e => { if( e.target.closest('.foo') ) { console.log(e.target.closest('.foo')); } }); // works
document.querySelector('.foo').addEventListener('change', e => { console.log(e.target); }); // works
$(document).on('change', '.foo', e => { console.log(e.target); }); // works
$('.foo').change(e => { console.log(e.target); }); // works
setTimeout(() => { $('.foo').change(); }, 3000);
document.addEventListener('change', e => { if( e.target.closest('.foo') ) { console.log(e.target.closest('.foo')); } }); // does not work
document.querySelector('.foo').addEventListener('change', e => { console.log(e.target); }); // does not work
$(document).on('change', '.foo', e => { console.log(e.target); }); // works
$('.foo').change(e => { console.log(e.target); }); // works
// pass additional data
setTimeout(() => { document.querySelector('.foo').dispatchEvent(new CustomEvent('change', { 'bubbles': true, 'detail': {'foo':'bar'} })); }, 3000);
document.querySelector('.foo').addEventListener('change', e => { console.log(e.detail); });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment