如何使用Bootstrap重置弹出模式的位置?

时间:2017-08-31 15:56:50

标签: javascript bootstrap-modal

我正在寻找解决问题的方法,我看到了很多不同的方法,但没有一个对我有用。 我会在这里粘贴我的代码,看看你能否以某种方式帮助我。 我有一个可拖动的弹出窗口来显示一个音符。主屏幕上有一个项目列表,每次用户点击“查看”链接时,它会打开弹出窗口,其中包含此特定项目的注释。 一切都正常。弹出窗口打开正确的信息,我可以在屏幕上移动弹出窗口。那么我唯一的问题是: 一旦我关闭弹出窗口并打开一个新弹出窗口,而不是将弹出窗口重置到原始位置,它就会打开我离开另一个弹出窗口的位置。当用户关闭弹出窗口时,我需要重置弹出窗口的位置。

这是我的js:

require(['jquery'
    , 'bootstrap'
    , 'datepicker'
    , 'typeahead'
    , 'combobox'
    , 'tagsinput'
], function($){

    // DOM ready
    $(function(){
        $('.modal-dialog').draggable();

        $('#noteModal').on('show.bs.modal', function(e) {

            //get data-id attribute of the clicked element
            var note = $(e.relatedTarget).data('note');
            //populate the textbox
            $(e.currentTarget).find('span[name="note"]').text(note);
        });



    });
});

这是我的html页面上的模式:

<!-- Modal to display the Note popup -->
<div class="modal" id="noteModal" tabindex="-1" role="dialog" aria-labelledby="noteModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title" id="noteModalLabel">Note</h4>
            </div>
            <div class="modal-body">
                <span name="note" id="note"></span>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

每次用户关闭弹出窗口时,如何重置弹出窗口的位置?

感谢你!

1 个答案:

答案 0 :(得分:1)

在你的点击处理程序中,你可以使用JQuery来设置模态的css,如下所示:

if (!$(".modal.in").length) {
  $(".modal-dialog").css({
    top: 0,
    left: 0
  });
}

这将重置模态的位置。您可以在JavaScript中调用模态之前使用它,假设您使用JS打开模态。

尝试运行下面的代码段或使用您的模式查看此 CodePen Demo 示例。

// DOM ready
$(function() {
  $(".modal-dialog").draggable();
  $("#btn1").click(function() {
    // reset modal if it isn't visible
    if (!$(".modal.in").length) {
      $(".modal-dialog").css({
        top: 0,
        left: 0
      });
    }
    $("#noteModal").modal({
      backdrop: false,
      show: true
    });
  });

  $("#noteModal").on("show.bs.modal", function(e) {
    var note = $('#btn1').data('note');

    $(e.currentTarget).find('span[name="note"]').html(note);
  });
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<!-- Modal to display the Note popup -->
<div class="modal" id="noteModal" tabindex="-1" role="dialog" aria-labelledby="noteModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="noteModalLabel">Note</h4>
      </div>
      <div class="modal-body">
        <span name="note" id="note"></span>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

<button id="btn1" data-note="I am a note. Hello.">Show Modal</button>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>

如果你想在模态打开时保持背景可用,我在不久前发布了一个解决方案here

我希望这有帮助!