2010-01-25 14 views
5

Estoy tratando de detener la acción predeterminada cuando se hace clic en un enlace. Luego pido confirmación y si confirmo quiero continuar el evento. ¿Cómo hago esto? Puedo detener el evento pero no puedo iniciarlo. Esto es lo que tengo hasta ahora:¿Cómo se detiene y luego inicia/desencadena un evento con JQuery?

$(document).ready(function(){ 
    $(".del").click(function(event) { 
    event.preventDefault(); 
    if (confirm('Are you sure to delete this?')) { 
     if (event.isDefaultPrevented()) { 
     //let the event fire. how? 
     } 
    } 
    }); 
}); 
+0

Sólo haciendo esto por mí mismo, y encontramos esta pregunta. Lo resolví poniendo 'return true' en mi función :) –

Respuesta

4

No es necesario evitar que se inicie por defecto. Sólo hacer esto:

$(function() { 
    $(".del").click(function(evt) { 
    if (!confirm("Are you sure you want to delete this?")) { 
     evt.preventDefault(); 
    } 
    }); 
}); 

Es más fácil y más lógico para evitar que el evento una vez que se necesita en lugar de prevenirla y luego un-evitando que (si eso es posible).

Recuerde que el código dejará de ejecutarse cuando se presente el cuadro de confirmación al usuario hasta que el usuario seleccione Aceptar o Cancelar.

Por cierto, eche un vistazo a JavaScript: event.preventDefault() vs return false. En función de si desea detener la propagación de eventos o no es posible que desee o bien llamar stopPropagation() o return false:

$(function() { 
    $(".del").click(function(evt) { 
    if (!confirm("Are you sure you want to delete this?")) { 
     return false; 
    } 
    }); 
}); 
+0

no debería ser si (! Confirmar .....? – Michel

+0

@Michel: sí, debería. Reparado. Gracias. – cletus

2

Mucho mejor a devolver sólo el confirm()

$(function() { 
    $(".del").click(function() { 
    return confirm("Are you sure you want to delete this?"); 
    }); 
}); 
Cuestiones relacionadas