Pergunta

Código PHP:

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

Eu quero remover o onclick="check($id,1) Portanto, o link não pode ser clicado ou "check($id,1) não será demitido. Como posso fazer isso com jQuery?

Foi útil?

Solução

À moda antiga (Pre-1.7):

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

Nova maneira (1.7+):

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

(Substitua ... pelo seletor que você precisa.)

// 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>

Outras dicas

Eu sei que isso é bastante velho, mas quando um estranho perdido encontra essa pergunta procurando uma resposta (como eu fiz), essa é a melhor maneira de fazê -lo, em vez de usar removeattr ():

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

Citando JQuerys OFICIAL DOKU:

"Remover um manipulador de eventos ONCLICK em linha usando .removeattr () não atinge o efeito desejado no Internet Explorer 6, 7 ou 8. Para evitar problemas em potencial, use .Prop ()" em vez disso "

Se você estiver usando o jQuery 1.7

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

senão

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

Removendo onclick propriedade

Suponha que você adicionou seu evento de clique em linha, como este:

<button id="myButton" onclick="alert('test')">Married</button>

Então, você pode remover o evento como este:

$("#myButton").prop('onclick', null); // Removes 'onclick' property if found

Removendo click ouvintes de eventos

Suponha que você tenha adicionado seu evento de clique definindo um ouvinte de evento, como este:

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

... ou assim:

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

Então, você pode remover o evento como este:

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

Removendo os dois

Se você não tiver certeza de como seu evento foi adicionado, você pode combinar os dois, assim:

$("#myButton").prop('onclick', null)  // Removes 'onclick' property if found
              .off('click');          // Removes other events if found

É muito fácil usando removeattr.

$(element).removeAttr("onclick");

Depois de se esforçar tanto com o Bind, Unbind, On, Off, Click, Att, Removeattr, Prop, o fiz funcionar. Então, eu tenho o seguinte cenário: No meu HTML, não anexei nenhum manipulador de OnClick em linha.

Então, no meu JavaScript, usei o seguinte para adicionar um manipulador de OnClick em linha:

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

Para remover isso em um ponto posterior do JavaScript, usei o seguinte:

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

É assim que ele funcionou para eu vincular e desviar os eventos de cliques dinamicamente em JavaScript. Lembre -se de não inserir nenhum manipulador de OnClick em linha em seus elementos.

E se o evento OnClick não estiver diretamente no elemento, mas do elemento pai? Isso deve funcionar:

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

Experimente se você desviar o evento OnClick by ID e use:

$('#youLinkID').attr('onclick','').unbind('click');

Experimente se você desviar o evento OnClick by Class e use:

$('.className').attr('onclick','').unbind('click');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top