2012-11-18 35 views
7

Tôi đang hiển thị một phương thức Bootstrap đơn giản với nút 'thanh toán' ở dưới cùng.Chaining Twitter Bootstrap phương thức ('ẩn') với độ trễ

Ngày cách nhấn vào nút Tôi muốn:

  1. Đóng phương thức, ví dụ $ ('# myModal'). phương thức ('ẩn')
  2. Đợi đến khi hoạt ảnh kết thúc
  3. Thay đổi window.location.href thành trang 'checkout' của tôi.

Tôi dường như không thể tìm thấy cách xích mà không cần nó chạy ngay lập tức chức năng tiếp theo, ví dụ:

$('#myModal').modal('hide').each(function() { 
    window.location.href = '/checkout'; 
}); 

hoặc tôi nghĩ trễ() có thể hữu ích, ví dụ:

$('#myModal').modal('hide').delay(1000).each(function() { 
    window.location.href = '/checkout'; 
}); 

Điều đó không hoạt động hoặc chỉ thay đổi trang ngay lập tức.

Đây có phải là sự cố jQuery phổ biến không? Hoặc tôi sẽ phải mở rộng Bootstrap để xử lý này?

Trả lời

10

Có sự kiện được gọi là hidden khi phương thức khởi động twitter bị ẩn hoàn toàn. Vì vậy, bạn có thể làm điều gì đó như sau:

$('#myModal').bind('hidden', function(){ 
    window.location.href = '/checkout'; 
}).modal('hide'); 
+4

Tôi muốn thêm câu trả lời này vào câu trả lời. Bạn có thể sử dụng 'một' thay vì' bind'. Vì vậy, chức năng của bạn sẽ được thực hiện chỉ ** một lần ** ngay sau cuộc gọi ẩn sau đây của bạn. Và có, bạn nên chạy toàn bộ mã này trên nút bấm thanh toán. – Inferpse

+0

Cảm ơn, tôi đã cố gắng như trên và nó đã hoạt động. Tôi đã do dự lúc đầu tiên như tôi nghĩ phạm vi có thể áp dụng cho tất cả các phương thức đóng cửa, không chỉ là nhấp vào nút 'kiểm tra', nhưng nó hoạt động hoàn hảo! – AndyC

+8

Nếu bạn đang tìm kiếm hành vi tương tự chính xác trong Bootstrap 3, hãy sử dụng sự kiện "hidden.bs.modal" thay vì "ẩn". – mdrozdziel

Các vấn đề liên quan