了解data-dismiss属性在Bootstrap中的工作原理

Tie*_*yen 27 javascript jquery twitter-bootstrap twitter-bootstrap-3

我是Bootstrap的新手,我遇到了这个例子的问题:

<!-- Trigger the modal with a button -->
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Modal Header</h4>
      </div>
      <div class="modal-body">
        <p>Some text in the modal.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>

  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

根据我的理解data-dismiss="modal"属性应该关闭模式,如果你点击它,但我不明白它如何在幕后工作.我检查了官方文档:http://getbootstrap.com/javascript/#modals-examples但没有解释.

Ade*_*eel 20

隐藏功能modal.js以这种方式实现.

this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
Run Code Online (Sandbox Code Playgroud)

基本上它只是找到具有属性data-dismiss和值的元素modal.点击它会隐藏这些元素.

  • @Adeel你能详细说明吗?如果代码搜索具有值为"modal"的属性"data-dismiss"的DOM元素,它将找到我的按钮.它如何确定隐藏哪个DOM节点? (6认同)
  • 您能解释一下 Bootstrap 如何检测 HTML 页面上的 data-dismiss="modal" 属性吗?为什么 Bootstrap 会触发您提到的代码?抱歉,我提出了一些非常基本的问题,我对该框架完全陌生。 (3认同)

小智 11

替换data-dismiss="modal"为:onclick="$('#modal_id').modal('hide');"

你应该有这样的事情:

<button type="button" class="close" onclick="$('#modal_id').modal('hide');" aria-label="Close">
Run Code Online (Sandbox Code Playgroud)

onclick="$('#modal_id').modal('hide');" 将仅关闭放置它的特定模式。

请注意这个答案是否有用。


小智 6

如果您在一个页面上使用多个模式同时打开,彼此重叠,data-dismiss="modal"则关闭最上面的将隐藏所有活动模式。

  • 那么如何防止隐藏所有其他模态 (3认同)