web-dev-qa-db-fra.com

Comment effacer/supprimer le gestionnaire d'événements JavaScript?

Étant donné le fragment HTML suivant:

<form id="aspnetForm" onsubmit="alert('On Submit Run!'); return true;">

Je dois supprimer/effacer le gestionnaire de l'événement onsubmit et enregistrer le mien à l'aide de jQuery ou de tout autre type d'utilisation de JavaScript. 

54
Jordan Terrell

Pour faire cela sans aucune bibliothèque:

document.getElementById("aspnetForm").onsubmit = null;
80
jiggy

Avec jQuery

$('#aspnetForm').unbind('submit');

Et puis continuez pour ajouter les vôtres.

24
Peter Bailey

Essayez ceci, cela fonctionne pour moi:

$('#aspnetForm').removeAttr('onsubmit').submit(function() {   
    alert("My new submit function justexecuted!"); 
});

Voir this pour plus de détails.

11
Ryan

Pour jQuery, off() en supprime tous les gestionnaires d'événements ajoutés par jQuery.

$('#aspnetForm').off();

L'appel de .off () sans argument supprime tous les gestionnaires attachés aux éléments. 

2
zwcloud

Pour jQuery, si vous liez des gestionnaires d'événements à .live, vous pouvez utiliser .die pour dissocier toutes les instances liées à .live.

2
Brian DiCasa

Si vous souhaitez supprimer TOUSevent-handlers du element and its child-nodes et conserver uniquement le HTML structure, nous pouvons utiliser jQuery'sclone () :

var original, clone;
//
original = $('#my-div');
clone = original.clone();
//
original.replaceWith(clone);

Ceci va effectivement ne laisser aucun event-handlers sur la element ou son child-nodes.

Bonne chance...

0
Akash