web-dev-qa-db-fra.com

Comment supprimer "onclick" avec JQuery?

Code PHP:

<a id="a$id" onclick="check($id,1)" href="javascript:void(0)"  class="black">Qualify</a>

Je souhaite supprimer le onclick="check($id,1) afin que le lien ne puisse pas être cliqué ou que "check($id,1)" ne soit pas déclenché. Comment puis-je le faire avec JQuery?

86
Steven

Old Way (avant 1.7):

$("...").attr("onclick", "").unbind("click");

Nouvelle manière (1.7+):

$("...").prop("onclick", null).off("click");

(Remplacez ... par le sélecteur dont vous avez besoin.)

// use the "[attr=value]" syntax to avoid syntax errors with special characters (like "$")
$('[id="a$id"]').prop('onclick',null).off('click');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<a id="a$id" onclick="alert('get rid of this')" href="javascript:void(0)"  class="black">Qualify</a>
215
glmxndr

Je sais que c'est assez ancien, mais lorsqu'un étranger perdu trouve cette question à la recherche d'une réponse (comme moi), c'est la meilleure façon de le faire, au lieu d'utiliser removeAttr ():

$element.prop("onclick", null);

Citer doku officiel de jQuerys :

"La suppression d'un gestionnaire d'événements en ligne onclick à l'aide de .removeAttr () n'obtient pas l'effet souhaité dans Internet Explorer 6, 7 ou 8. Pour éviter tout problème, utilisez plutôt .prop ()"

57
acme

si vous utilisez jquery 1.7

$('html').off('click');

else

$('html').unbind('click');
17
Jaydeep Jadav

Supprimer la propriété onclick

Supposons que vous ajoutiez votre événement click 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

Supprimer les écouteurs d'événement click

Supposons que vous ajoutiez votre événement click en définissant un écouteur d'événement, comme ceci:

$("button").on("click", function() { alert("clicked!"); });

... ou comme ceci:

$("button").click(function() { alert("clicked!"); });

Ensuite, vous pouvez supprimer l'événement comme ceci:

$("#myButton").off('click');          // Removes other events if found

Retrait des deux

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
15
John Slegers

C'est très facile avec removeAttr.

$(element).removeAttr("onclick");
7
Nor Leyva López

Après avoir essayé si fort avec bind, unbind, on, off, cliquez sur, attr, removeAttr, prop, je l'ai fait fonctionner. Donc, j'ai le scénario suivant: Dans mon html, je n'ai attaché aucun gestionnaire inline onclick.

Ensuite, dans mon code javascript, j’ai utilisé ce qui suit pour ajouter un gestionnaire inline onclick:

$(element).attr('onclick','myFunction()');

Pour supprimer cela plus tard de Javascript, j'ai utilisé ce qui suit:

$(element).prop('onclick',null);

C'est ainsi que cela a fonctionné pour moi de lier et de dissocier des événements de clic de manière dinamique en Javascript. N'oubliez pas de ne pas insérer de gestionnaire onclick en ligne dans vos éléments.

6
bboydflo

Que se passe-t-il si l'événement onclick n'est pas directement sur l'élément, mais à partir de l'élément parent? Cela devrait fonctionner:

$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
    e.preventDefault();
    e.stopPropagation();
    return false;
});
1
Milan

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 Class, puis utilisez:

$('.className').attr('onclick','').unbind('click');
0
Vishnu Sharma