Remarque : le initCustomEvent est désormais obsolète. Les autres réponses présentent des pratiques actualisées et recommandées.
Si vous utilisez IE9+, vous pouvez utiliser ce qui suit. Le même concept est incorporé dans Vous n'avez peut-être pas besoin de jQuery .
function addEventListener(el, eventName, handler) {
if (el.addEventListener) {
el.addEventListener(eventName, handler);
} else {
el.attachEvent('on' + eventName, function() {
handler.call(el);
});
}
}
function triggerEvent(el, eventName, options) {
var event;
if (window.CustomEvent) {
event = new CustomEvent(eventName, options);
} else {
event = document.createEvent('CustomEvent');
event.initCustomEvent(eventName, true, true, options);
}
el.dispatchEvent(event);
}
// Add an event listener.
addEventListener(document, 'customChangeEvent', function(e) {
document.body.innerHTML = e.detail;
});
// Trigger the event.
triggerEvent(document, 'customChangeEvent', {
detail: 'Display on trigger...'
});
Si vous utilisez déjà jQuery, voici la version jQuery du code ci-dessus.
$(function() {
// Add an event listener.
$(document).on('customChangeEvent', function(e, opts) {
$('body').html(opts.detail);
});
// Trigger the event.
$(document).trigger('customChangeEvent', {
detail: 'Display on trigger...'
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
13 votes
Mozilla a publié un article très intéressant expliquant Créer et déclencher des événements en Javascript . J'espère que cela vous aidera !
1 votes
Veuillez changer la réponse acceptée en este c'est plus actuel.
2 votes
@RickyStam On dirait que cet article de MDN déplacé ici