Bootstrap kipinde açık bir işlevi çağırmak


179

JQuery UI iletişim kutusunu kullandım openve iletişim kutusu açıldıktan sonra yürütmek için bazı Javascript kodunu belirtebileceğiniz bir seçenek vardı . Sahip olduğum bir işlevi kullanarak iletişim kutusundaki metni seçmek için bu seçeneği kullanırdım.

Şimdi bunu bootstrap modelini kullanarak yapmak istiyorum. HTMl kodu aşağıdadır:

<div id="code" class="modal hide fade">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h3>Modal header</h3>
    </div>
    <div class="modal-body">
        <pre>
print 'Hello World'

Ve kipi açan düğmeye gelince:

 <a href="#code" data-toggle="modal" class="btn code-dialog">Display code</a>

Düğmenin onclick dinleyicisini kullanmaya çalıştım, ancak mod mesajı görünmeden önce uyarı mesajı görüntülendi :

$( ".code-dialog" ).click(function(){
    alert("I want this to appear after the modal has opened!");
});

3
shown.bs.modalolayı, HTML belgesi en azından <div class="modal fade"><div class="modal-dialog"></div></div>yapı içerdiğinde oluşur .
— Kimyasal Programcı


Yorum @Chemical Programmer selamlıyorum, cevap ile görünmelidir
— Tarek

Yanıtlar:


332

Sen kullanabilirsiniz gösterilen olay neye ihtiyacınız dayalı / gösteri olayı:

$( "#code" ).on('shown', function(){
    alert("I want this to appear after the modal has opened!");
});

Gösteri: Plunker

Bootstrap 3.0 Güncelleştirmesi

Bootstrap 3.0 için gösterilen etkinliği kullanmaya devam edebilirsiniz, ancak şu şekilde kullanabilirsiniz:

$('#code').on('shown.bs.modal', function (e) {
  // do something...
})

"Events" bölümündeki Bootstrap 3.0 belgelerine bakın .


17
$("#code").on("shown.bs.modal", function(e) {})Bootstrap 3.0 için kullanın .
— teewuane

en azından bu kodun çağrılması için Kimya Programcısının <div class = "modal fade"> <div class = "modal-dialog"> </div> </div> yapısına ihtiyaç duyduğu konusunda neler söylediğini dikkate aldığınızdan emin olun
— whyoz

1
#codeJQuery seçici jQuery temel bileşenlerin biri anlamına gelir: w3schools.com/jquery/jquery_selectors.asp
— DDW

$(document).on("shown.bs.modal", ...Genel dinleme için kullanıyorum
— vladkras

1
En azından shown.bs.modal aslında mod gösterilmeden önce yürütülür. Bu benim durumumda bir sorun değil, ama bilmek iyi olabilir.
— Jonny

86

çalışmaz .. $(window)bunun yerine kullanın

Göstermek için

$(window).on('shown.bs.modal', function() { 
    $('#code').modal('show');
    alert('shown');
});

Saklanmak için

$(window).on('hidden.bs.modal', function() { 
    $('#code').modal('hide');
    alert('hidden');
});

5
$ ("#modal") .on ('gösterildi', function () {alert ("Modal açıldıktan sonra bunun görünmesini istiyorum!");} Benim için çalışmıyor ama $ (pencere) çalıştı !! @viper_tkd
— Krutal Modi

1
Belirli bir seçici tarafından değil, açılan / kapanan HERHANGİ bir modele bağlanmam gerekiyordu . Bu cevap bu durumda benim için iyi çalıştı.
— jyoseph

Bu, modsal GUI'ye tamamen yüklenmeden önce çalışır. Modsal yüklendikten sonra modumdan veri almak istiyorum - modsal GUI henüz mevcut olmadığı için bu yöntem her şey için 'tanımsız' döndürüyor, bu nedenle alanlar ve diğer her şey henüz sorgulanamıyor. (görünmez)
— FrenkyB

Bu benim için çalıştı, ancak işleyicinin içinde belirli bir modun hedeflenmesi için bir kontrol ekledim: if( $('#code').is( e.relatedTarget ) ) { ... }sayfada birden fazla öğe olduğundan.
— allicarn

Doğru etkinlik adı için teşekkürler, ancak $ (window) için öğe kimliğini değiştirmeye gerek yoktur. Js ile bs4 kullanma 3.4.
— Jcc.Sanabria

17

Kullanabileceğiniz showyerine shownyerine kalıcı açık sonrası, sadece modal açık önce yüke işlevini yapmak için.

$('#code').on('show.bs.modal', function (e) {
  // do something...
})

9

Bootstrap modal olayları ortaya çıkarır. shownBöyle olayı dinleyin

$('#my-modal').on('shown', function(){
  // code here
});

0

birisinin hala bir sorunu varsa, (loaded.bs.modal) kullanarak benim için mükemmel çalışan tek şey:

 $('#editModal').on('loaded.bs.modal', function () {
       console.log('edit modal loaded');

       $('.datepicker').datepicker({
            dateFormat: 'yy-mm-dd',
            clearBtn: true,
            rtl: false,
            todayHighlight: true,
            toggleActive: true,
            changeYear: true,
            changeMonth: true
        });
});

-4

Bootstrap modelini göstermek ve gizlemek için belw kodunu kullanabilirsiniz.

$('#my-model').on('shown.bs.modal', function (e) {
  // do something here...
})

ve eğer modeli gizlemek istiyorsanız aşağıdaki kodu kullanabilirsiniz.

$('#my-model').on('hidden.bs.modal', function() {
    // do something here...
});

Umarım bu cevap projeniz için yararlıdır.


7
copycat again ... kullanıcının diğer cevaplarına bak
— Laurent B
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.