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 …