2016-07-04 10 views
1

Ich habe diesen Code von irgendwo ausgeliehen, um von einem Bootstrap modal zu einem anderen zu wechseln. Nach dem Wechsel möchte ich den Handler ausschalten, damit er nicht jedes Mal umschaltet, wenn ich das erste Modal einfach schließe. Mein Problem ist, dass, sobald die modale Switching-Funktion verwendet wird, ich nicht wie nur diesen spezifischen Event-Handler ausschalten kann, ohne das andere Ereignis auszuschalten, das ich feuern, wenn ein bestimmtes Modal schließt (an anderer Stelle). Irgendwelche Vorschläge?Entfernen Sie nur einen Event-Handler mit jquery ".off"

//switch modals 
function switchModals(fromModal, toModal) { 
    $(fromModal).on('hidden.bs.modal', function (e) { 
     $(toModal).modal('show'); 
     //clear this function so it doesn't show up if they exit the window again 
     $(fromModal).off('hidden.bs.modal'); 
    }); 
    $(fromModal).modal('hide'); 
} 

Antwort

0

fand ich eine Lösung. Ich musste dem Handler nur einen Namensraum geben, der für die Funktion einzigartig ist. Dann entbinde ich es durch seinen Namensraum in der ".off()" Methode. Ich habe "switch" als Namespace gewählt.

//switch modals 
function switchModals(fromModal, toModal) { 
    $(fromModal).on('hidden.bs.modal.switch', function (e) { 
     $(toModal).modal('show'); 
     //clear this function so it doesn't show up if they exit the window again 
     $(fromModal).off('.switch'); 
    }); 
    $(fromModal).modal('hide'); 
} 
1

Sie benötigen diese Linie außerhalb der switchModals setzen

$(<FromModalId>).modal('hide'); 
0

Versuchen this statt fromModal innerhalb des hidden.bs.modal Rückruf, z.B.

//switch modals 
function switchModals(fromModal, toModal) { 
    $(fromModal).on('hidden.bs.modal', function (e) { 
     $(toModal).modal('show'); 
     //clear this function so it doesn't show up if they exit the window again 
     $(this).off('hidden.bs.modal'); 
    }); 
    $(fromModal).modal('hide'); 
} 
+0

Das hat nicht funktioniert. Ich denke, es muss irgendwo in der .off() angegeben werden, aber ich weiß nicht genau wie. – Quin

+0

Können Sie Ihren vollständigen Code oder einen Link zu Ihrer Webseite posten? –

0

Versuchen Sie Folgendes zwischen modals wechseln:

var el = fromModal+','+toModal; 
    $(el).on('hidden.bs.modal', function (e) { 
     $(el).not(this).modal('show'); 
     $(this).modal('hide'); 
    }); 
Verwandte Themen