2011-12-19 9 views
13

Esta es una pregunta extraña. Tenemos algunos enlaces de producción en nuestra intranet. Algunos rouge javascript están devolviendo un "falso" en todos los enlaces en nuestra página de inicio de intranet.JQuery: Eliminar eventos "OnClick" de las etiquetas 'a'

No tenemos acceso a la fuente para volver a generar el control y corregir este javascript.

Así como una banda de ayuda temporal quiero mover todos los eventos "clic" sobre los enlaces usando jQuery

Los enlaces en este momento son así:

<a href="https://www.mysite.com/" onclick="AddHit('Header: mysite.com', 'http://www.mysite.com'); return false;" title="Mysite Home">www.Mysite.com</a> 

quiero escribir algunos jquery para obtener el paseo del código "onclick = 'AddHit ...".

+0

http://stackoverflow.com/questions/209029/best-way-to -remove-an-event-handler-in-jquery –

Respuesta

28

Puede probar esto: Respuesta

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

Editar Actualización sobre la base de los comentarios y jquery Docs:

Nota: La eliminación de un manejador de evento onclick en línea usando .removeAttr() no alcanza el efecto deseado en Internet Explorer 6, 7 u 8. Para evitar posibles problemas, use .prop() en su lugar

mejor manera de hacer esto:

$("a").prop("onclick", null); 
+0

Aún mejor: $ ('...'). Prop ('onclick', null) .off ('click'); Comprobar http://stackoverflow.com/a/1687805/3063226 – Heitor

+0

Parece que funciona bien incluso sin .off ('clic'), .prop ('onclick', nulo) es suficiente al menos para IE11. –

7

quitar el atributo de todos los enlaces que tienen que:

$('a[onclick]').removeAttr('onclick'); 
-1

Uso .unbind() método o off() para deshacerse de eso.

+0

Creo que eliminará los controladores de eventos agregados a través de jQuery o addEventListener(), pero no un controlador de eventos onClick en línea. - Jasper – Foreever

2

Puede hacer algo como esto;

$('a[onclick]').removeAttr('onclick'); 
0

No se ha probado, pero creo que esto debería funcionar:

$(document).ready(function(){ 
    $('a').removeAttr("OnClick"); 
}); 

Más información: http://api.jquery.com/removeAttr/

+3

Desde la misma página: "Eliminar 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:' $ element.prop ("onclick", null); '" – WynandB

2
$(function(){ 
    $('a[onclick*="AddHit"]').removeAttr('onclick'); 
} 

Esto eliminará todos ellos, pero que desea asegurarse de que don eliminarlo de enlaces no deseados. Muchos elementos se enganchan en el atributo onclick, si tienes una clase que puedes verificar antes de eliminarla o el contenido de onclick sería mejor. Odiaría ver que todo el sitio deje de funcionar porque no se llamó a JS. Esto eliminará cualquier onclicks con la función AddHit en el clic para mantenerlo más seguro.

2

Esto elimina el atributo onclick para todos los enlaces que tienen un valor onclick que comienza con "AddHit(" (dejando intactos otros enlaces).

$('a[onclick^="AddHit("]').removeAttr("onclick"); 
3

De acuerdo con la documentación de jQuery se debe utilizar .prop() para eliminar una línea onclick, ya que esto evita problemas en Internet Explorer 6, 7 u 8.

probar este

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

que necesitaba para eliminar el onclick de una etiqueta después de la primera posición por lo que aquí es lo que hice:

onclick="$(this).prop('onclick', null);" 

creo que sirve

+2

Hasta ahora, esta es la única respuesta correcta. Con jQuery, ni '.removeAttr()' ni '.unbind()' eliminarán de forma segura un controlador de eventos 'onclick' en línea en ciertas versiones de Internet Explorer. Ver ['.removeAttr()'] (http://api.jquery.com/removeAttr) – WynandB

0

tener esto en mente, si su atributo 'onclick' está en línea Y en un modo MODAL (arranque)

como thi s: (en modal)

<a id="myDiv" href="#" onclick="doSomething();">Click here !</a> 

-> No mencionar a la etiqueta <body>!

en jQuery (con el cuerpo en primer selector):

$('body #myDiv').prop('onclick', null); 

He buscado durante unas horas ...

Cuestiones relacionadas