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?

È stato utile?

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);

jQuerys doku ufficiale :

  

"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');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top