Respuestas:
Old Way (anterior a 1.7):
$("...").attr("onclick", "").unbind("click");
Nueva forma (1.7+):
$("...").prop("onclick", null).off("click");
(Reemplazar ... con el selector que necesita).
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 IE11.
Sé que esto es bastante antiguo, pero cuando un extraño perdido encuentra esta pregunta buscando una respuesta (como lo hice yo), esta es la mejor manera de hacerlo, en lugar de usar removeAttr ():
$element.prop("onclick", null);
Citando el doku oficial de jQuerys :
"La eliminación de un controlador de eventos onclick en línea con .removeAttr () no logra el efecto deseado en Internet Explorer 6, 7 u 8. Para evitar problemas potenciales, use .prop () en su lugar"
<span onlick="method()">sometext>/span>
El evento no está vinculado por completo y funciona muy bien
onclick
propiedadSuponga que agregó su evento de clic en línea, así:
<button id="myButton" onclick="alert('test')">Married</button>
Luego, puede eliminar el evento de esta manera:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
click
detectores de eventosSuponga que agregó su evento de clic definiendo un detector de eventos, como este:
$("button").on("click", function() { alert("clicked!"); });
... o así:
$("button").click(function() { alert("clicked!"); });
Luego, puede eliminar el evento de esta manera:
$("#myButton").off('click'); // Removes other events if found
Si no está seguro de cómo se agregó su evento, puede combinar ambos, así:
$("#myButton").prop('onclick', null) // Removes 'onclick' property if found
.off('click'); // Removes other events if found
si está usando jquery 1.7
$('html').off('click');
más
$('html').unbind('click');
Es muy fácil usar removeAttr.
$(element).removeAttr("onclick");
Después de esforzarme tanto con bind, unbind, on, off, click, attr, removeAttr, prop, lo hice funcionar. Entonces, tengo el siguiente escenario: En mi html NO he adjuntado ningún controlador onclick en línea.
Luego, en mi Javascript, utilicé lo siguiente para agregar un controlador onclick en línea:
$(element).attr('onclick','myFunction()');
Para eliminar esto en un momento posterior de Javascript, utilicé lo siguiente:
$(element).prop('onclick',null);
Esta es la forma en que funcionó para mí vincular y desvincular eventos de clic dinámicamente en Javascript. Recuerde NO insertar ningún controlador onclick en línea en sus elementos.
.on('click', myFunction)
(nota que myFunction
es no entre comillas) y luego, más tarde,.off('click')
¿Qué pasa si el evento onclick no está directamente en el elemento, sino en el elemento principal? Esto debería funcionar:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Pruebe esto si desvincula el evento onclick por ID. Luego use:
$('#youLinkID').attr('onclick','').unbind('click');
Intente esto si desvincula el evento onclick por Class Luego use:
$('.className').attr('onclick','').unbind('click');