2017-04-04 2 views
-1

Ich versuche Modal-Schaltfläche in Modal zu verwenden, funktioniert aber nicht.Verwenden Sie die Schaltfläche zum Schließen auf Modal

Mein Code:

<center><button class="bleu b_modal">Modal test</button></center> 

<script type="text/javascript"> 

    $(".b_modal").click(function(e) { 
     e.preventDefault(); 
     modal.open({content: '\ 
      <center><button class="b_close">Close modal</button></center>\ 
     '}); 
    }); 

    $('.b_close').click(function(e){ 
     e.preventDefault(); 
     modal.close(); 
    }); 

    var modal = (function(){ 
     var 
     method = {}, 
     $modal, 
     $content, 
     $close; 

     method.open = function(settings) { 
      $content.empty().append(settings.content); 
      $modal.show(); 
      document.body.style.overflow = "hidden"; 
     }; 

     method.close = function() { 
      $modal.hide(); 
      $content.empty(); 
      document.body.style.overflow = "auto"; 
     }; 

     $modal = $('<div id="modal"></div>'); 
     $content = $('<div id="modal_content"></div>'); 
     $close = $('\ 
      <center><button class="b_close">Close modal</button></center>\ 
     '); 

     $modal.hide(); 
     $modal.append($content, $close); 

     $(document).ready(function(){ 
      $('body').append($modal); 
     }); 

     $close.click(function(e){ 
      e.preventDefault(); 
      method.close(); 
     }); 

     return method; 
    }()); 

</script> 

Die Schließen-Schaltfläche auf modal nicht funktioniert, aber die zweite Schließen-Schaltfläche aus modal arbeitet. Das Problem ist in meinem $('.b_close').click, aber nichts, was ich versuchte funktioniert.

modal.open({content: '\ 
      <center><button class="b_close">Close modal</button></center>\ 
     '}); 

Antwort

0

Diese Zeilen scheint Ihr Problem zu sein:

modal.open({content: '\<center><button class="b_close">Close modal</button></center>\'}); 
$close = $('\<center><button class="b_close">Close modal</button></center>\'); 

die Mitte-Tags entfernen, sind sie in HTML5 nicht unterstützt. Entfernen Sie außerdem die umgekehrten Schrägstriche (\). Derjenige am Ende entkommt tatsächlich dem, der sonst deine Saite abbrechen würde.

$close = $('<button class="b_close">Close modal</button>'); 

Und ich schlage vor, nicht die Schaltfläche in die .open() -Methode übergeben. Rufen Sie einfach:

modal.open(); 

Und dann verwenden Sie die var $ schließen in Ihrer Funktion.

var $close = $('<button class="b_close">Close modal</button>'); 

    method.open = function() { 
     $content.append($close); 
     $modal.show(); 
     document.body.style.overflow = "hidden"; 
    }; 

Schließlich brauchen Sie nicht in Ihrem .open() auf Ihre Inhalte zu nennen .empty() und .close() Methoden.

ich einige Änderungen an Ihrem Code vorgenommen haben, ist hier eine Arbeits jsfiddle: https://jsfiddle.net/0nxv597a/2/

+0

das Zentrum balise auf meiner Seite nur für den Test ist, aber nicht mein Problem lösen. –

+0

Werfen Sie einen Blick auf die Jfiddle, die ich für Sie gemacht habe. es zeigt eine funktionierende Lösung – Cruiser

+0

@Cruiser Ihre Geige funktioniert nicht beim zweiten Versuch – Sankar

Verwandte Themen