【问题标题】:How to close Bootstrap 4 Pop-up on X with carousel如何使用轮播关闭 X 上的 Bootstrap 4 弹出窗口
【发布时间】:2019-05-14 03:35:33
【问题描述】:

当有人单击 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>

【问题讨论】:

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


    【解决方案1】:

    您应该链接到 正确 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>

    【讨论】:

      【解决方案2】:

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

      $('#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>
      

      【讨论】:

      • 您好,我尝试添加此内容,但仍然无法正常工作。
      • 所以,问题出在其他地方。当你点击 x 按钮时发生了什么?关于 onclick 方法?
      • 您好,问题由 rv7 编辑,因此您可以测试代码并查看会发生什么。如果你能弄明白的话,我还加了一个 50 分的赏金。
      • @Emanuel 你能告诉我当你点击 x 按钮时会发生什么吗?关于 onclick 方法?
      【解决方案3】:

      当你启动你的模式时,你可以传递下面给出的选项:

      { keyboard: false, backdrop: 'static'}
      

      这将禁用通过单击背景和退出按钮来关闭模式。

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

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

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

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

      `$('#myModal').modal("hide");
      

      Have a look for the same here:

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多