2010-01-25 28 views
5

Tôi đang cố gắng dừng hành động mặc định khi một liên kết được nhấp. Sau đó, tôi yêu cầu xác nhận và nếu được xác nhận, tôi muốn tiếp tục sự kiện. Làm thế nào để tôi làm điều này? Tôi có thể dừng sự kiện nhưng không thể bắt đầu. Dưới đây là những gì tôi có cho đến thời điểm này:Làm thế nào để bạn dừng lại và sau đó bắt đầu/kích hoạt một sự kiện với 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

Chỉ cần làm điều này bản thân mình, và thấy điều này câu hỏi. Tôi giải quyết vấn đề này bằng cách đặt 'return true' vào hàm của tôi :) –

Trả lời

4

Không cần phải ngăn chặn mặc định để bắt đầu. Chỉ cần thực hiện việc này:

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

Sẽ dễ dàng hơn và hợp lý hơn để ngăn sự kiện này thay vì ngăn chặn sự kiện đó và sau đó ngăn chặn sự kiện đó (nếu có thể).

Hãy nhớ rằng mã sẽ ngừng chạy khi hộp xác nhận được hiển thị cho người dùng cho đến khi người dùng chọn OK hoặc Hủy.

Nhân tiện, hãy xem JavaScript: event.preventDefault() vs return false. Tùy thuộc vào nếu bạn muốn để ngăn chặn sự lan truyền sự kiện hay không bạn có thể muốn hoặc gọi stopPropagation() hoặc return false:

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

không nên là nếu (! Xác nhận .....? – Michel

+0

@Michel: đúng vậy. Cố định. – cletus

2

Tốt hơn để chỉ trả lại confirm()

$(function() { 
    $(".del").click(function() { 
    return confirm("Are you sure you want to delete this?"); 
    }); 
}); 
Các vấn đề liên quan