2017-04-04 51 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

@Cruiser你的小提琴不能在第二次尝试 – Sankar

相关问题