显示页面上所有 Bootstrap 模态框的事件

Show event for all Bootstrap Modals on the page

每当打开 Bootrap 模式时,我都会尝试做一些事情(在本例中是一些统计数据)。

我知道,我可以将这样的事件侦听器添加到模态:

$('#modal-content').on('shown.bs.modal', function() {
   alert('do something');
});

但是有没有办法让页面上的所有模态都有一个监听器?奖励问题:即使是那些被 Javascript?

插入的人

我想过这样的事情:

jQuery('.modal[role="dialog"]').on('show.bs.modal', function() {
   alert('do something');
});

但我希望有更好的方法和方法适用于 Javascript 插入的模式。

这应该可以解决问题——它会在事件冒泡到文档级别时捕获事件,因此应该捕获所有事件:

$(document).on('shown.bs.modal', function() {
   alert('do something');
});

this bootply

HTH, -泰德

如果您提前知道这些 ID,您可以将它们列出来:

$('#modalOne, #modalTwo').on('shown.bs.modal', function() {
   alert('do something');
});

或者更好的是,如果您以编程方式创建它们以及在 html 中创建它们并且为 id 使用通用前缀,则可以使用以下内容:

$("div[id^='modal']").on('shown.bs.modal', function() {
   alert('do something');
});