2012-07-12 33 views
6

Tôi hiện đang làm việc trên Bootstrap để đặt video theo phương thức. Tất cả mọi thứ được tạo ra thông qua cms (vì vậy tôi không có quyền kiểm soát số lượng video sẽ được hiển thị.)Twitter Bootstrap Modal - Ẩn bất kỳ

Mọi thứ đều ổn (tôi phải cung cấp cho mỗi phương thức ID riêng của mình và mọi thứ hoạt động). Thing là khi bạn đóng phương thức và video đang chạy, video (và âm thanh) tiếp tục chạy ở chế độ nền.

Để né tránh rằng, khi một phương thức được đóng với nút x, tôi làm mới html trong phương thức, như thế này:

$('button.close').click(function(){ 
    var divcible=$(this).parent().parent().find(".modal-body"); 
    var html = divcible.html() 
    divcible.html("") 
    divcible.html(html) 
}) 

Vấn đề của tôi với điều đó là nếu người dùng nhấp vào bối cảnh, các Html sẽ không đặt lại. trên trang web của boostrap họ gọi đây là

$('#myModal').on('hidden', function() { 
    // do something… 
}) 

theo dõi khi một phương thức đóng lại, nhưng tôi muốn tìm thấy nếu có một cách để giám sát khi BẤT CỨ phương thức đóng cửa.

+0

Các bạn đã thử '$ ('.modal-body'). on ('hidden', function() { // làm điều gì đó… }) '? Chọn công cụ chọn của bạn trên tên lớp thay vì theo ID. –

Trả lời

9

Thêm một lớp học để modals bạn và sử dụng rằng:

$('.myModal').on('hidden', function() { 
    // do something… 

    // edit for clarity: "that" will now reference the modal that was hidden 
    var that = this;   
}) 
2

Theo mặc định, hầu hết các sự kiện bubble up từ mục tiêu sự kiện ban đầu để các yếu tố document. Đây cũng là trường hợp của sự kiện hidden được kích hoạt khi phương thức đã hoàn tất bị ẩn khỏi người dùng. Do đó, một cách để theo dõi khi BẤT CỨ phương thức đóng cửa là để đính kèm một xử lý sự kiện cho các yếu tố document như sau:

$(document).on('hidden', function() { 
    // a modal closes, so do what you want :) 
}) 
+0

Thật không may là bạn không kiểm tra nếu bạn đang thực sự xử lý một phương thức ở đây, phải không? –

+0

Thực tế, thành phần phương thức khởi động Twitter khởi động một sự kiện được gọi là 'ẩn'. Không có không gian tên, không có thông tin bổ sung về nguồn gốc của sự kiện này. Bất cứ khi nào bạn bắt một sự kiện có tên 'ẩn', bạn phải chắc chắn rằng không có thành phần nào khác có thể kích hoạt cùng một sự kiện có cùng tên. Vấn đề là hoàn toàn giống nhau ngay cả khi bạn xem xét giải pháp của @ Terry. Đây không phải là vấn đề nơi bạn bắt sự kiện nhưng sự kiện nào được kích hoạt và với tên nào. – fsenart

+0

OK. Mặc dù, để công bằng, giải pháp của Terry đảm bảo rằng chỉ có các mô hình chính xác mới được xem xét. Đó là một chút công việc, mặc dù. –

8
$('#myModal').on('hidden.bs.modal', function (e) { 
    // do something... 
}) 

từ tài liệu 3.x bootstrap http://getbootstrap.com/javascript/#modals

+0

Cảm ơn. Tôi đã sử dụng Bootstrap v4 alpha và tôi cần "hidden.bs.modal" để nó hoạt động, giống như bạn đã nói. Cảm ơn. –

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