jQuery

2009-12-18 14 views
13

que tiene un ancla como estojQuery

<a href='#' onclick='return showform(this)'>click me</a> 

Pero yo quiero ser capaz de anular la función onclick, la forma de hacer esto en jQuery?

porque parece cuando agrego

$('a').click(function() { alert('hi there!'); }); 

el nuevo controlador de clic no es reemplazar el antiguo

+0

qué click me? estructura/contenido y comportamiento deben estar separados. http://en.wikipedia.org/wiki/Unobtrusive_JavaScript – Wondering

+0

He eliminado la función onclick y confío todo en jquery porque parece ser más flexible de esa manera ... Gracias a todos por las respuestas :) –

Respuesta

18

Ha intentado algo como esto:

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

Publicación anterior, pero este es definitivamente el método que me ha estado funcionando dentro de la función ready() – htmlr

+0

¡Funcionó perfectamente para mí también! – KatharaDarko

10

Si estás usando jQuery como éste, que no desea ningún controlador en el HTML . ¿No puedes eliminar el atributo onClick?

Si usted está preocupado acerca de romper cosas, buscar y reemplazar en:

onclick='return showform(this)' 

y reemplazar con

class='showform' 

A continuación, puede hacer:

$('a.showform').click(function (e) { 
    e.preventDefault(); 
    return showform(this); 
}); 

que mantendrá sus manejadores existentes trabajando.

22

En su caso, el evento onCick está anulando el jQuery. Lo que podría ser capaz de hacer es:

$('a').unbind('click').click(function(){ 
    alert('why hello there children.'); 
}) 

Pero creo que esto tendría que ser incluido después de la

<a href='#' onclick='return showform(this)'>click me</a> 

Dicho esto, realmente no se debe utilizar de todos modos ... onClicks hace el código es realmente difícil de mantener y cambiar (como habrás descubierto).

+0

Si usted es siguiendo a Yahoo, todos los guiones están incluidos al final de la página de todos modos ... – Skilldrick

+0

Es verdad, pensé que debería señalar esa parte, ya que el último evento onclick debería anular el resto no? – SeanJA

+0

Depende de cuándo se llame $ ('a'). Unbind(). Si está en $ (document) .ready(), entonces podría estar en 'head' y seguir funcionando. – Skilldrick

0

Hay un plugin para ello, pero sólo se debe hacer esto cuando realmente se necesita. El plug-in le permite llamar a la función original o ignorar/reemplazar por completo

jQuery Override Plugin

$(divElementObj).override('onclick', 'click', function(...));