javascript - 改变模态关闭行为
问题描述
谢天谢地,我得到了调试一年前离开我公司的某人的代码的工作。我是 jquery 的新手,我正在为手头的任务而苦苦挣扎。
该应用程序是一个商店/库存管理 ASP.NET 应用程序。有一个概述页面,其中列出了所有商店。您可以编辑商店。所以它的功能是:
$(document).on('click', '.js-open-edit-modal', function () {
$("#EditWinkelModal").load("/Winkels/Details/" + $(this).data("id"), function () {
$("#modal-winkel-edit").modal();
});
});
打开一个模态。到目前为止还可以。问题是当用户关闭模式时。这可以通过按右上角的“X”、按转义键、单击模式外部或按一个按钮来完成,定义为
<button type="button" class="c-btn c-btn--secondary" modal-close>Annuleer</button>
发生的情况是这只隐藏了模式(将“显示”设置为“无”。它不会删除添加的代码。所以现在,当用户编辑另一个商店时,更多的代码被添加到页面中。代码冲突. 这是 Chrome 检查的图片,在我编辑了一些商店之后(在我的语言/荷兰语中称为“winkel”)
我已经找到了解决按钮问题的方法。我只是将其更改为
<button type="button" class="c-btn c-btn--secondary" id="cancelWinkelAdd">Annuleer</button>
并添加了代码
$(document).on('click', '#cancelWinkelEdit', function () {
$.modal.close();
var element = $("#modal-winkel-edit")[0];
element.parentNode.removeChild(element);
});
但这只能解决按钮的问题。所有其他关闭选项(如上所述)仍然存在问题。所以现在我正在寻找一种方法来覆盖这个close-modal
方法。
我应该怎么做,或者有更好的解决方案吗?
解决方案
看起来您正在使用jQuery-modal
,jQuery-modal
具有通过某些操作触发的事件列表。您可以侦听模式关闭时触发的事件。
$.modal.AFTER_CLOSE = 'modal:after-close';
// Fires after the modal has fully closed (including animations).
并在调用此事件时从 DOM 中删除模式
$('#example-modal').on($.modal.AFTER_CLOSE, function(event, modal) {
modal.remove(); // <-- delete the modal from the DOM
});
更多信息可以在这里找到:https ://github.com/kylefox/jquery-modal#events
推荐阅读
- c# - 如果任何 PUT/POST/PATCH 请求内容具有 HTML/Script/Styles 标签,如何返回错误?
- c# - 从 XML 标记中获取值
- c# - 如何覆盖 ASP.NET Core 中控制器操作的默认反序列化?
- android - Android TV 全球搜索
- java - 当我使用 @RequiredArgsConstructor 时,变量可能尚未初始化
- c++ - 为什么这个递归 lambda 函数不安全?
- ios - Nativescript:ContentView 中有多个布局子项
- c# - 如何使用子文件夹中的 ico 文件设置 WPF 应用程序图标
- azure-application-insights - 来自服务总线消息的公共交通访问活动
- docker - npm install 在 docker jenkins 上给出 ssl 错误