Respostas:
Old Way (pré-1.7):
$("...").attr("onclick", "").unbind("click");
Novo Caminho (1.7+):
$("...").prop("onclick", null).off("click");
(Substitua ... pelo seletor de que você precisa.)
Removing an inline onclick event handler using .removeAttr() doesn't achieve the desired effect in Internet Explorer 6, 7, or 8. To avoid potential problems, use .prop() instead
.prop()
para o IE11 também.
Eu sei que isso é muito antigo, mas quando um estranho perdido encontra essa pergunta em busca de uma resposta (como eu fiz), então esta é a melhor maneira de fazer isso, em vez de usar removeAttr ():
$element.prop("onclick", null);
Citando o doku oficial do jQuerys :
"Remover um manipulador de eventos onclick embutido usando .removeAttr () não atinge o efeito desejado no Internet Explorer 6, 7 ou 8. Para evitar possíveis problemas, use .prop () em vez disso"
<span onlick="method()">sometext>/span>
O evento é totalmente desvinculado e funciona muito bem
onclick
propriedadeSuponha que você tenha adicionado seu evento de clique embutido, assim:
<button id="myButton" onclick="alert('test')">Married</button>
Então, você pode remover o evento assim:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
click
ouvintes de eventosSuponha 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 assim:
$("#myButton").off('click'); // Removes other events if found
Se não tiver certeza de como seu evento foi adicionado, você pode combinar os dois, desta forma:
$("#myButton").prop('onclick', null) // Removes 'onclick' property if found
.off('click'); // Removes other events if found
se você estiver usando jquery 1.7
$('html').off('click');
outro
$('html').unbind('click');
É muito fácil usar removeAttr.
$(element).removeAttr("onclick");
Depois de tentar tanto com bind, unbind, on, off, click, attr, removeAttr, prop eu fiz funcionar. Portanto, tenho o seguinte cenário: No meu html, NÃO anexei nenhum manipulador onclick embutido.
Então, em meu Javascript, usei o seguinte para adicionar um manipulador onclick embutido:
$(element).attr('onclick','myFunction()');
Para remover isso mais tarde do Javascript, usei o seguinte:
$(element).prop('onclick',null);
Esta é a maneira que funcionou para mim vincular e desvincular eventos de clique dinamicamente em Javascript. Lembre-se de NÃO inserir nenhum manipulador onclick embutido em seus elementos.
.on('click', myFunction)
(note que nãomyFunction
está entre aspas) e, mais tarde,.off('click')
E se o evento onclick não estiver diretamente no elemento, mas no elemento pai? Isso deve funcionar:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Tente fazer isso se você desvincular o evento onclick por ID. Em seguida, use:
$('#youLinkID').attr('onclick','').unbind('click');
Tente fazer isso se você desvincular o evento onclick pela classe. Em seguida, use:
$('.className').attr('onclick','').unbind('click');