Twitter Bootstrap'taki modal kapanış etkinliği nasıl ele alınır?


191

Twitter bootstrap'ta, modals belgelerine bakın. Kipin yakın olayını dinlemenin ve bir işlevi yerine getirmenin bir yolu olup olmadığını anlayamadım.

örneğin bu yöntemi örnek olarak alalım:

<div class="modal-header">
    <button type="button" class="close close_link" data-dismiss="modal" aria-hidden="true">&times;</button>
    <h3>Modal header</h3>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
    <a href="#" class="btn close_link" data-dismiss="modal">Close</a>   
</div>

Üstteki X düğmesi ve alttaki kapatma düğmesi nedeniyle modun her ikisini de gizleyebilir / kapatabilir data-dismiss="modal". Acaba, bunu bir şekilde dinleyebilseydim?

Alternatif olarak bunu elle yapabilirim, sanırım ...

$("#salesitems_modal").load(url, data, function() { 
     $(this).modal('show'); 
     $(this).find(".close_link").click(modal_closing);
});

Ne düşünüyorsun?


Yanıtlar:


370

Bootstrap 3 ve 4 için güncellendi

Bootstrap 3 ve Bootstrap 4 belgeleri kullanabileceğiniz iki olaya işaret eder.

hide.bs.modal : Bu olay, hide örneği yöntemi çağrıldığında hemen tetiklenir.
hidden.bs.modal : Modun kullanıcıdan gizlenmesi bittiğinde (CSS geçişlerinin tamamlanmasını bekleyecek) bu olay tetiklenir.

Ve bunları nasıl kullanacağınıza dair bir örnek verin:

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

Eski Bootstrap 2.3.2 cevap

Bootstrap'ın belgeleri kullanabileceğiniz iki olayı ifade eder.

hide : Bu olay, hide örneği yöntemi çağrıldığında hemen tetiklenir.
hidden : Bu olay, modun kullanıcıdan gizlenmesi bittiğinde tetiklenir (css geçişlerinin tamamlanmasını bekler).

Ve bunların nasıl kullanılacağına dair bir örnek sağlar:

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

1
Bazı nedenlerden dolayı, bu modda olduğum bir düğmenin faresini kapattığımda da benim için ateş ediyor. Ve modda bir form gönderdiğimde (onSubmit olayı tetiklenmeden önce bile). Kimse bu davranışı durdurmak için biliyor?
Guy

2
Ekstra bir bağlam sağlamak için $ (document) .on ('hidden', '#myModal', function () {// bir şeyler yap}); bunun $ (belge) .ready işlev bildirimi içinde yer alması gibi belirli durumlarda çalışmasını önlemek için.
Gareth Daine

merhaba, kalıcı gizli jquery uygulamak istiyorum. ve projeme aynı kodu uyguladım ama çalışmıyor. Bunun için herhangi bir öneriniz var mı?
Hardi Shah

@HardiShah, kodunuzu ve / veya hatalarınızı içeren yeni bir soru sormalısınız.
albertedevigo

68

Modsal div'iniz dinamik olarak eklendiyse (Bootstrap 3 için)

$(document).on('hide.bs.modal','#modal-id', function () {
                alert('');
 //Do stuff here
});

Bu, dinamik olmayan içerik için de çalışır.


hide vs hidden arasındaki fark ??
Mahi

3
@mahi .hide olayı, gizleme örneği yöntemi çağrıldığında hemen tetiklenir. oysa modun kullanıcıdan gizlenmesi bittiğinde gizli olay tetiklenir (CSS geçişlerinin tamamlanmasını bekler).
Confused

18

İki çift modal olay vardır, biri "göster" ve "göster", diğeri "gizle" ve "gizli" dir. Addan da görebileceğiniz gibi, modun yakın olmak üzereyken gizleme olayı yangınlarını gizleyin, örneğin sağ üst köşedeki çarpı işaretini veya kapat düğmesini vb. Gizli aslında modal yakın sonra ateşlenir. Bu olayları kendiniz test edebilirsiniz. Örnek için:

$( '#modal' )
   .on('hide', function() {
       console.log('hide');
   })
   .on('hidden', function(){
       console.log('hidden');
   })
   .on('show', function() {
       console.log('show');
   })
   .on('shown', function(){
      console.log('shown' )
   });

Ve sorunuza gelince, kipinizin 'gizleme' olayını dinlemeniz gerektiğini düşünüyorum.


1

Bootstrap Modal Etkinlikleri:

  1. hide.bs.modal => Modal gizlenmek üzereyken ortaya çıkar.
  2. hidden.bs.modal => Kalıcı mod tamamen gizlendiğinde oluşur (CSS geçişleri tamamlandıktan sonra).
<script type="text/javascript">
    $("#salesitems_modal").on('hide.bs.modal', function () {
        //actions you want to perform after modal is closed.
    });
</script>

Umarım bu yardımcı olacak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.