Cómo sobrescribir los controladores de eventos jquery

Intentaré explicar el problema con un código simple.

var fireClick = function() { alert('Wuala!!!') }; $('#clickme').click(fireclick); $('#clickme').click(fireclick); 

Así que ahora, obviamente, lo alertará 2 veces, pero lo necesito solo una vez. Lo intenté de muchas maneras, pero sin resultado.

Gracias.

A partir de jQuery 1.7, debería estar desactivado para eliminar los controladores de eventos y activado para agregarlos, aunque todavía puede usar la abreviatura de click .

 $('#clickme').off('click').on('click', fireclick); $('#clickme').off().on('click', fireclick); 

Respuesta original:

Si desea reemplazar todos los controladores de clics, llame primero a desvincular sin un argumento de función. Si desea reemplazar todos los controladores de eventos, no especifique el tipo de evento.

 $('#clickme').unbind('click').click(fireclick); $('#clickme').unbind().click(fireclick); 

Use un espacio de nombres para asegurarse de que no elimine ningún otro oyente:

 $('#clickme').off('click.XXX').on('click.XXX', fireclick); 

Siempre que ningún otro código use XXX , puede estar seguro de que no ha cometido algún otro error del que no estaba al tanto.

Puede usar la función jQuery desvincular para eliminar el primer evento:

 var fireClick = function() { alert('Wuala!!!') }; $('#clickme').click(fireclick); $('#clickme').unbind('click', fireClick); // fireClick won't fire anymore... $('#clickme').click(fireclick); // ...but now it will 

Intentaría eliminar las llamadas adicionales, pero a menos de lo que pueda asegurarse de llamar a estos dos cada vez:

 $('#clickme').unbind('click', fireclick); $('#clickme').click(fireclick); 

Debe utilizar setInterval. El problema es que no puedes tener dos alertas emergentes al mismo tiempo. Primero hay que cerrar primero o el segundo no puede aparecer en la pantalla …