如何使用轮播关闭X上的Bootstrap 4弹出窗口

时间:2019-05-14 03:35:34

标签: jquery bootstrap-4 bootstrap-modal bootstrap-carousel

我试图在有人单击X图标时关闭Bootstrap 4弹出窗口。

如果我删除代码“ data-backdrop =“ static”,则每当我在模式之外的任何地方单击时,它将关闭弹出窗口。但是,这是行不通的,因为每次有人尝试单击轮播的下一个图标时,它将自动关闭弹出窗口。我只希望当某人仅单击X图标时关闭弹出窗口。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div id="myModal" class="modal fade in" role="dialog" data-backdrop="static">
  <div class="modal-dialog">
    <button type="button" class="close" data-dismiss="myModal">&times;</button>

    <div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
      <div class="carousel-inner">
        <div class="carousel-item active">
          <img class="d-block w-100" src="../images/placeimg_550_250_grayscale_any.jpg" alt="First slide">
        </div>
        <div class="carousel-item">
          <img class="d-block w-100" src="https://placeimg.com/550/250/any" alt="Second slide">
        </div>
      </div>
      <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>
    </div>
  </div>
</div>


<script type="text/javascript">
  $(window).on('load', function() {
    $('#myModal').modal('show');
  });
</script>

3 个答案:

答案 0 :(得分:1)

您应该链接到 proper CSS和JavaScript文件;对于Bootstrap 4(撰写本文时,当前版本为4.3.1):

关闭按钮的data-dismiss属性的值也应设置为modal

<button type="button" class="close" data-dismiss="modal">&times;</button>

关闭按钮和转盘也应放置在.modal-content内-您可以使用自定义CSS来使模式透明。

工作示例

/* Automatically open the modal */
$('#myModal').modal('show');
/* Make the modal be transparent */
#myModal .modal-content {
  background-color: transparent;
  border: 0;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />

<div id="myModal" class="modal fade" role="dialog" data-backdrop="static">
  <div class="modal-dialog">
    <div class="modal-content">
      <!-- Button to close the modal -->
      <div><button type="button" class="close" data-dismiss="modal">&times;</button></div>

      <!-- Carousel -->
      <div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
        <div class="carousel-inner">
          <div class="carousel-item active">
            <img class="d-block w-100" src="https://placeimg.com/550/250/nature" alt="First slide">
          </div>
          <div class="carousel-item">
            <img class="d-block w-100" src="https://placeimg.com/550/250/any" alt="Second slide">
          </div>
        </div>
        <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
          <span class="carousel-control-prev-icon" aria-hidden="true"></span>
          <span class="sr-only">Previous</span>
        </a>
        <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
          <span class="carousel-control-next-icon" aria-hidden="true"></span>
          <span class="sr-only">Next</span>
        </a>
      </div>
    </div>
  </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

答案 1 :(得分:0)

将此代码添加到脚本标签:

$('#myModal').find(".close").click(function() {
      $('#myModal').modal("hide");
});

因此您的代码应如下所示:

<script type="text/javascript">
    $(window).on('load',function(){
        $('#myModal').modal('show');
    });
    $('#myModal').find(".close").on("click", function() {
        $('#myModal').modal("hide");
    });
</script>

答案 2 :(得分:0)

启动模态时,可以通过以下选项:

$data = $response->getBody()->getContents();
$base64 = 'data:image/png;base64,' . base64_encode($data);
echo '<img src="'.$base64.'">';

将无法通过单击背景和退出按钮来关闭模式。

{ keyboard: false, backdrop: 'static'}

在关闭图标上,您可以通过添加属性来关闭模型,例如

<div id="modal" class="modal hide fade in" data-keyboard="false" data-backdrop="static">

并在cancel()方法上添加功能以关闭模型

data-dismiss="modal" or ng-click="cancel()"

Have a look for the same here: