2013-01-10 14 views
8

Hallo ich die Standardeinstellung für twitter Bootstrap modals gesetzt nahe an nicht, wenn der Benutzer klickt auf dem HintergrundWie modal schließen auf dem Hintergrund (Twitter Bootstrap), indem Sie

$.fn.modal.defaults = { 
    backdrop: 'static' 
    , keyboard: false 
    , show: false 
} 

es jedoch ein bestimmtes Szenario ist, wobei I Sie müssen diesen Standard überschreiben, damit der Benutzer auf den Hintergrund klicken kann, um das Modal zu schließen.

habe ich versucht, es zu überschreiben, wenn die besondere modal

jedoch
//Modal to be displayed and allow user to close it by clicking on background 
view = new Onethingaday.Views.Muses.MuseModalView 
    model: @options.muse 

$('.modal').html view.render().el 
$('.modal').bind 'shown', => 
    $('.modal').modal 
    'backdrop': true 
    ('.modal').unbind 'show' 
$('.modal').modal('show') 

Anzeigen, über mein Code funktioniert nicht. Jeder hat eine Idee, wie der Code geändert werden kann, damit er funktioniert. Außerdem scheint der obige Code das Standardverhalten ALL meiner Mods in der App zu ändern, was ich nicht möchte. Wie ändere ich den Hintergrund nur für dieses bestimmte Modal (d. H. MuseModalView)? Vielen Dank!

+1

Haben Sie versucht, das Modal mit 'Optionen' zu initialisieren? Wie: '$ ('# myModal') .modal ({ Hintergrund: true });' – dunli

Antwort

7

Ich hatte heute ein ähnliches Problem. Zuerst fand ich diese Diskussion: https://github.com/twitter/bootstrap/issues/1202. Jemand schlug vor, isShown auf false setzen, vor der Schließung auf Hintergrund klicken modale Fenster zu verhindern:

$('myelement').data('modal').isShown = false 

Ich kann nicht sagen, dass ich den Hack mochte, vor allem, wenn ich herausgefunden hat, dass modale Fenster nicht richtig schließen lassen Klicken Sie auf OK/Abbrechen, klicken Sie auf - während isShow auf false gesetzt ist. Ich konnte nicht eine bessere Lösung finden, so dass ich tat dies: Ich habe Hintergrund globale Standardeinstellung: „statisch“ (deaktivieren schließt auf Hintergrund klicken) aufgelöst und diesen Code:

$('#myModal').on('shown', function() { 
    $("div.modal-backdrop").on('click', function() { 
     if(myCondition == true) { 
     $('#myModal').modal('hide'); 
     } 
    }) 
    }); 

div mit Klasse modal-Kulisse ist Wird dynamisch an Körper angehängt, wenn das modale Fenster geöffnet wird, und bei geschlossenem Objekt entfernt - für jedes modale Fenster. Das bedeutet, dass wir sicherstellen sollten, dass wir das richtig handhaben, wenn wir modale Fenster stapeln. Also habe ich meinen oberen Code ein wenig angepasst:

Dieser Code sollte modales Fenster nur schließen, wenn myCondition wahr ist. Es sollte für mich gut funktionieren, und ich hoffe, dass das auch Ihnen und jedem anderen helfen wird, der ähnliches Problem treffen wird.

Verwandte Themen