2010-01-25 15 views
5

Próbuję zatrzymać domyślną akcję po kliknięciu łącza. Następnie pytam o potwierdzenie, a jeśli potwierdziłem, chcę kontynuować wydarzenie. Jak mam to zrobic? Mogę zatrzymać wydarzenie, ale nie mogę go uruchomić. Oto, co mam do tej pory:Jak zatrzymać, a następnie uruchomić/wywołać zdarzenie z 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

prostu robi to samodzielnie, a które oceniły tę pytanie. Rozwiązałem to, wstawiając 'return true' w mojej funkcji :) –

Odpowiedz

4

Nie ma potrzeby, aby uniemożliwić start domyślny. Wystarczy to zrobić:

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

Jest to łatwiejsze i bardziej logiczne, aby zapobiec zdarzenie raz trzeba raczej niż zapobieganie go, a następnie un-zapobiegając (jeśli to w ogóle możliwe).

Należy pamiętać, że kod zostanie przerwany, gdy pole potwierdzenia zostanie wyświetlone użytkownikowi, dopóki użytkownik nie wybierze opcji OK lub Anuluj.

Przy okazji, spójrz na JavaScript: event.preventDefault() vs return false. W zależności, czy chcesz, aby zatrzymać rozprzestrzenianie zdarzenia lub nie chcesz albo zadzwonić stopPropagation() lub return false:

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

nie powinno być, jeśli (! Confirm .....? – Michel

+0

@Michel: tak powinno. Naprawiono. – cletus

2

Znacznie lepiej po prostu zwracają confirm()

$(function() { 
    $(".del").click(function() { 
    return confirm("Are you sure you want to delete this?"); 
    }); 
}); 
Powiązane problemy