2017-04-04 20 views
-1

モーダルで近いモーダルボタンを使用しようとしていますが、動作しません。モーダルでボタンを閉じる

マイコード:

<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> 

作業が、モーダルうち二閉じるボタンが機能しているモーダルないの閉じるボタン。問題は私の$('.b_close').clickですが、私が試したことは何もありません。

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

答えて

0

これらの行は、あなたの問題のようです:

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

彼らはHTML5でサポートされていない、中央タグを削除します。また、バックスラッシュ(\)も削除してください。最後の文字は実際にはあなたの文字列を終了させる 'をエスケープしています。

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

そして、ボタンを.open()メソッドに渡さないことをお勧めします。

modal.open(); 

次に、関数内でvar $ closeを使用してください。

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

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

最後に、.open()および.close()メソッドのコンテンツに対して.empty()を呼び出す必要はありません。

私はあなたのコードにいくつかの編集を行った、ここで働いjsfiddleです:https://jsfiddle.net/0nxv597a/2/

+0

中央地上子はちょうど私のページのテストのためですが、私の問題を解決しません。 –

+0

私はあなたのために作ったjsfiddleを見てください。それは実用的な解決策を示します – Cruiser

+0

@クルーザーあなたのフィドルはもう一度試してみません – Sankar

関連する問題