Come rimuovere “onclick” con jQuery?
-
18-09-2019 - |
Domanda
codice PHP:
<a id="a$id" onclick="check($id,1)" href="javascript:void(0)" class="black">Qualify</a>
Voglio rimuovere il onclick="check($id,1)
in modo che il collegamento non può essere cliccato o "check($id,1)
non sarà licenziato. Come posso farlo con jQuery?
Soluzione
Old Way (pre-1.7):
$("...").attr("onclick", "").unbind("click");
nuovo modo (1.7 +):
$("...").prop("onclick", null).off("click");
(Sostituire ... con il selettore è necessario.)
// 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>
Altri suggerimenti
So che questo è abbastanza vecchio, ma quando uno sconosciuto perduta trova questa domanda cerca di una risposta (come ho fatto io), allora questo è il modo migliore per farlo, invece di utilizzare removeAttr ():
$element.prop("onclick", null);
"Rimozione di un gestore di linea evento onclick utilizzando .removeAttr () non ottenere l'effetto desiderato in Internet Explorer 6, 7 o 8. Per evitare possibili problemi, utilizzare .prop () invece"
se si sta utilizzando jQuery 1.7
$('html').off('click');
altro
$('html').unbind('click');
Rimozione proprietà onclick
Supponiamo che si è aggiunto il clic in linea evento, in questo modo:
<button id="myButton" onclick="alert('test')">Married</button>
Quindi, è possibile rimuovere l'evento in questo modo:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
Rimozione di listener di eventi click
Si supponga aggiunto il tuo evento click definendo un listener di eventi, in questo modo:
$("button").on("click", function() { alert("clicked!"); });
... o come questo:
$("button").click(function() { alert("clicked!"); });
Quindi, è possibile rimuovere l'evento in questo modo:
$("#myButton").off('click'); // Removes other events if found
Rimozione sia
Se siete incerti come è stato aggiunto il vostro evento, è possibile combinare entrambe le cose, in questo modo:
$("#myButton").prop('onclick', null) // Removes 'onclick' property if found
.off('click'); // Removes other events if found
E 'molto semplice utilizzando removeAttr.
$(element).removeAttr("onclick");
Dopo aver provato così duro con bind, slegare, acceso, spento, clic, attr, removeAttr, prop ho fatto funzionare. Così, ho il seguente scenario: Nel mio html non ho attaccato qualsiasi linea gestori onclick.
Poi nel mio Javascript ho usato la seguente per aggiungere un inline gestore onclick:
$(element).attr('onclick','myFunction()');
Per rimuovere questo in un momento successivo da JavaScript ho usato il seguente:
$(element).prop('onclick',null);
Questo è il modo in cui ha funzionato per me e per legare eventi click UNBIND dinamicamente in Javascript. Ricordare di non inserire alcun inline gestore onclick nei tuoi elementi.
E se evento onclick non è direttamente sul elemento, ma da elemento padre? Questo dovrebbe funzionare:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Prova questo se non associare l'evento onclick per ID Quindi utilizzare:
$('#youLinkID').attr('onclick','').unbind('click');
Prova questo se non associare l'evento onclick da Class Quindi utilizzare:
$('.className').attr('onclick','').unbind('click');