Comment supprimer « onclick » avec JQuery?
-
18-09-2019 - |
Question
Code PHP:
<a id="a$id" onclick="check($id,1)" href="javascript:void(0)" class="black">Qualify</a>
Je veux supprimer le onclick="check($id,1)
de sorte que le lien ne peut pas être cliqué ou « check($id,1)
ne sera pas tiré. Comment puis-je faire avec JQuery?
La solution
Old Way (pré-1.7):
$("...").attr("onclick", "").unbind("click");
New Way (+ 1,7):
$("...").prop("onclick", null).off("click");
(remplacer ... 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>
Autres conseils
Je sais que c'est assez vieux, mais quand un étranger perdu trouve cette question à la recherche d'une réponse (comme je l'ai fait) alors c'est la meilleure façon de le faire, au lieu d'utiliser removeAttr ():
$element.prop("onclick", null);
"Suppression d'un gestionnaire d'événements en ligne à l'aide onclick .removeAttr () ne réalise pas l'effet désiré dans Internet Explorer 6, 7 ou 8. Pour éviter d'éventuels problèmes, utilisez .prop () au lieu"
si vous utilisez jquery 1.7
$('html').off('click');
autre
$('html').unbind('click');
Suppression de propriété onclick
Supposons que vous avez ajouté votre ligne d'événement click, comme ceci:
<button id="myButton" onclick="alert('test')">Married</button>
Ensuite, vous pouvez supprimer l'événement comme celui-ci:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
Suppression des écouteurs d'événement click
Supposons que vous avez ajouté votre événement de clic 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 celui-ci:
$("#myButton").off('click'); // Removes other events if found
Retrait à la fois
Si vous êtes incertain 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
Il est très facile en utilisant removeAttr.
$(element).removeAttr("onclick");
Après avoir essayé si dur avec bind, délie, on, off, cliquez, attr, removeAttr, prop je l'ai fait travailler. , J'ai tellement le scénario suivant: Dans mon html j'ai pas attaché tous les gestionnaires onclick inline.
Alors dans mon Javascript i utilisé ce qui suit pour ajouter un gestionnaire onclick en ligne:
$(element).attr('onclick','myFunction()');
Pour supprimer ce à un stade ultérieur de Javascript je suit:
$(element).prop('onclick',null);
Ceci est la façon dont il a fonctionné pour moi de lier et les événements de clic unbind en Javascript dinamically. Rappelez-vous de ne pas insérer un gestionnaire onclick en ligne dans vos éléments.
Et si l'événement onclick est pas directement sur l'élément, mais de l'élément parent? Cela devrait fonctionner:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Essayez si vous déliez l'événement onclick par ID Ensuite, utilisez:
$('#youLinkID').attr('onclick','').unbind('click');
Essayez si vous déliez l'événement onclick par classe Ensuite, utilisez:
$('.className').attr('onclick','').unbind('click');