Réponses:
Old Way (pré-1.7):
$("...").attr("onclick", "").unbind("click");
Nouvelle façon (1.7+):
$("...").prop("onclick", null).off("click");
(Remplacez ... par le sélecteur dont vous avez besoin.)
Removing an inline onclick event handler using .removeAttr() doesn't achieve the desired effect in Internet Explorer 6, 7, or 8. To avoid potential problems, use .prop() instead
.prop()
devais aussi utiliser pour IE11.
Je sais que c'est assez ancien, mais lorsqu'un inconnu perdu trouve cette question à la recherche d'une réponse (comme je l'ai fait), c'est la meilleure façon de le faire, au lieu d'utiliser removeAttr ():
$element.prop("onclick", null);
Citant le doku officiel de jQuerys :
«La suppression d'un gestionnaire d'événements onclick en ligne à l'aide de .removeAttr () n'obtient pas l'effet souhaité dans Internet Explorer 6, 7 ou 8. Pour éviter les problèmes potentiels, utilisez plutôt .prop ()»
<span onlick="method()">sometext>/span>
L'événement est entièrement non lié et fonctionne très bien
onclick
propriétéSupposons que vous ayez ajouté votre événement de clic en ligne, comme ceci:
<button id="myButton" onclick="alert('test')">Married</button>
Ensuite, vous pouvez supprimer l'événement comme ceci:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
click
écouteurs d'événementsSupposons que vous ayez ajouté votre événement de clic en définissant un écouteur d'événements, comme ceci:
$("button").on("click", function() { alert("clicked!"); });
... ou comme ça:
$("button").click(function() { alert("clicked!"); });
Ensuite, vous pouvez supprimer l'événement comme ceci:
$("#myButton").off('click'); // Removes other events if found
Si vous ne savez pas comment votre événement a été ajouté, vous pouvez combiner les deux, comme ceci:
$("#myButton").prop('onclick', null) // Removes 'onclick' property if found
.off('click'); // Removes other events if found
si vous utilisez jquery 1.7
$('html').off('click');
autre
$('html').unbind('click');
Il est très simple d'utiliser removeAttr.
$(element).removeAttr("onclick");
Après avoir essayé si dur avec bind, unbind, on, off, click, attr, removeAttr, prop, je l'ai fait fonctionner. Donc, j'ai le scénario suivant: Dans mon html, je n'ai pas attaché de gestionnaires onclick en ligne.
Ensuite, dans mon Javascript, j'ai utilisé ce qui suit pour ajouter un gestionnaire onclick en ligne:
$(element).attr('onclick','myFunction()');
Pour supprimer cela ultérieurement de Javascript, j'ai utilisé ce qui suit:
$(element).prop('onclick',null);
C'est ainsi que cela fonctionnait pour moi de lier et de dissocier des événements de clic de manière dynamique en Javascript. N'oubliez pas de ne PAS insérer de gestionnaire onclick en ligne dans vos éléments.
.on('click', myFunction)
(notez que ce myFunction
n'est pas entre guillemets) et ensuite, plus tard,.off('click')
Et si l'événement onclick n'est pas directement sur l'élément, mais depuis l'élément parent? Cela devrait fonctionner:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Essayez ceci si vous dissociez l'événement onclick par ID, puis utilisez:
$('#youLinkID').attr('onclick','').unbind('click');
Essayez ceci si vous dissociez l'événement onclick par classe, puis utilisez:
$('.className').attr('onclick','').unbind('click');