确定哪个按钮打开了 Bootstrap 3 模态框。

8

我有以下Bootstrap按钮:

<button type="button" class="btn btn-primary btn-lg" data-button="create" data-toggle="modal" data-target="#modal">Create</button>
<button type="button" class="btn btn-primary btn-lg" data-button="delete" data-toggle="modal" data-target="#modal">Delete</button>

这是一个模态框:

<div class="modal fade" id="modal">
  <div class="modal-dialog">
    <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">Modal title</h4>
      </div>
      <div class="modal-body">
        <p>One fine body&hellip;</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary" data-dismiss="modal">Save changes</button>
      </div>
    </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

我该如何确定是哪个按钮触发了模态框的打开?
具体来说,我需要使用data-button属性。

2
如果您有其他问题,请提出新的问题。将额外的问题添加到现有问题中是不合适的。我已经撤销了您最后的编辑。 - Simon MᶜKenzie
1
@SimonMᶜKenzie 谢谢。下面的答案回答了我的问题。感谢你的帮助。 - narayan
1个回答

23

你可以监听 show.bs.modal/shown.bs.modal 事件之一。

在函数内部,事件会附加一个 relatedTarget 属性。您可以使用它来确定是哪个按钮触发了模态框的打开。

Bootstrap 3 - 模态框事件:

此事件在调用 show 实例方法时立即触发。如果由单击引起,则单击的元素将作为事件的 relatedTarget 属性可用。

$('.modal').on('show.bs.modal', function (e) {
    var $trigger = $(e.relatedTarget);
});

这里有一个例子

如果你想访问data-button属性,使用:

$(e.relatedTarget).data('button');

相反地,如果您想确定是哪个按钮导致了模态框关闭,请参见此答案


谢谢!这正是我想做的。我没有意识到有内置事件可以用来做这个。 - narayan
我更新了问题:“如何将类添加到触发元素?”但这个代码不起作用:e.relatedTarget.addClass('triggered')。 - narayan
@narayan 它不起作用是因为它不是一个 jQuery 对象。尝试使用 $() 包装它......像这样:$(e.relatedTarget).addClass('triggered'); - Josh Crozier
也适用于Bootstrap 4。 - 6opko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接