Bootstrap Modal 实现动态交互

Bootstrap是一个非常流行的前端框架,它提供了响应式设计、移动友好以及酷炫的界面设计。个人喜欢它,因为它已经是一个完全成熟的框架,并且有一个非常活跃的社区来提供帮助。最近,在使用 Bootstrap 的 Modal 功能时,写了很多JavaScript代码,并在这个过程中编写了一段小代码,用于在 JavaScript 中动态创建和显示 Bootstrap Modal,包括动态的标题、正文和按钮。认为这可能对其他人也有用,尽管大多数人可能已经在代码库中有了类似的代码,但分享出来总是有益的。

JavaScript实现:

定义了一个名为 BstrapModal 的类,它有一个构造函数,接受三个参数:title、body 和 buttons。

参数说明:

  • title:Modal 的标题。可以是 HTML 或简单的字符串。
  • bodyModal的正文内容。也可以是 HTML 或字符串。
  • buttons:Modal 页脚中的按钮。这是一个按钮对象数组。

按钮对象应该包含以下属性:

  • Value:按钮的显示文本。
  • Css:按钮的 CSS 类。
  • Callback:点击按钮时执行的函数。

例如,一个按钮对象可能如下所示:

{ Value: "CLOSE", Css: "btn-danger", Callback: function(event) { // 关闭按钮点击逻辑 } }

BstrapModal.Close 函数用于关闭 Modal 并从文档中删除它。可以根据自己的需求扩展这个类,例如,为不同类型的Bootstrap按钮创建一个枚举并放入构造函数中,或者扩展 show 函数,使其能够获取 Modal 类型,如大或小等。

以下是 BstrapModal 类的实现代码:

var BstrapModal = function(title, body, buttons) { var title = title || "Lorem Ipsum History", body = body || "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.", buttons = buttons || [{ Value: "CLOSE", Css: "btn-primary", Callback: function(event) { BstrapModal.Close(); } }]; var GetModalStructure = function() { var that = this; that.Id = BstrapModal.Id = Math.random(); var buttonshtml = ""; for (var i = 0; i < buttons.length; i++) { buttonshtml += ""; } return ""; }(); BstrapModal.Delete = function() { var modals = document.getElementsByName("dynamiccustommodal"); if (modals.length > 0) document.body.removeChild(modals[0]); }; BstrapModal.Close = function() { $(document.getElementById(BstrapModal.Id)).modal('hide'); BstrapModal.Delete(); }; this.Show = function() { BstrapModal.Delete(); document.body.appendChild($(GetModalStructure)[0]); var btns = document.querySelectorAll("button[name='btn" + BstrapModal.Id + "']"); for (var i = 0; i < btns.length; i++) { btns[i].addEventListener("click", buttons[i].Callback || BstrapModal.Close); } $(document.getElementById(BstrapModal.Id)).modal('show'); }; };

使用方式:

new BstrapModal().Show();

这将显示一个默认的 Modal,因为没有传递任何标题、正文和按钮数组,所以它将使用所有默认值。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485