文章内容
2023/5/7 17:38:02,作 者: 黄兵
MDCDialog 无法关闭问题总结
最近在使用 MDCDialog 的样式库,点击打开 Dialog 的代码如下:
function deleteNumberAction() { // 获取所有具有类名 "btn" 的元素 var buttons = document.getElementsByClassName("btn"); // 遍历每个按钮并绑定单击事件 for (var i = 0; i < buttons.length; i++) { var button = buttons[i]; if (button.id.startsWith("delete-number-")) { // 过滤掉不需要的按钮 button.addEventListener("click", function () { // 在这里添加处理单击事件的代码 const dialog = new mdc.dialog.MDCDialog(document.querySelector('.mdc-dialog')); dialog.open() $("#delete-confirm").attr("data-number", $(this).data('number')) }); } } }
上面的代码通过获取所有具有类名 "btn" 的元素,然后遍历每个按钮并绑定单击事件。在过滤掉不需要的按钮后,添加一个单击事件处理程序,该处理程序实例化一个 MDCDialog 并调用其 open()
方法来打开对话框。
但是上面存在一个问题,我单击一个按钮或者出发另外一个事件,无法关闭 Dialog。
解决方法如下:
function deleteNumberAction() { // 获取所有具有类名 "btn" 的元素 var buttons = document.getElementsByClassName("btn"); // 遍历每个按钮并绑定单击事件 for (var i = 0; i < buttons.length; i++) { var button = buttons[i]; if (button.id.startsWith("delete-number-")) { // 过滤掉不需要的按钮 button.addEventListener("click", function () { // 在这里添加处理单击事件的代码 const dialog = new mdc.dialog.MDCDialog(document.querySelector('.mdc-dialog')); dialog.open() $("#delete-confirm").attr("data-number", $(this).data('number')) // 在这里添加关闭对话框的代码 $('#close-dialog-btn').on('click', function() { dialog.close(); }); }); } } }
这里需要注意的是:重新打开 Dialog 之后,再次关闭,从效果来说的确没有问题。
在上面的示例中,我们添加了一个新的处理程序来捕获关闭对话框按钮的单击事件。在事件处理程序中,我们获取对话框实例并调用其 close() 方法以关闭对话框。
这样就解决了这个问题。
其它相关推荐:
评论列表