javascript - 单ajax页面仪表板上的jquery模态复制

标签 javascript jquery ajax jquery-ui-dialog single-page-application

我遇到一个问题,在某个 ajax 请求中有 5 个 jquery 对话框。该页面不会重新加载,并且完全依赖于ajax。一旦这个特定的 ajax 请求加载了 5 个对话框,它们就会被初始化,并且插件会在对话框的页面底部添加必要的标记。我通过 ajax 离开该页面以转到另一个 ajax 请求。从模态生成的 html 仍然在页面上。如果我再次返回到具有这 5 个对话框的页面,它会在底部的 html 中添加另外 5 个模态,所以现在变成 10 个。在导航 ajax 页面时是否有一个好的方法来删除这些模态,或者我有跟踪它?有一些对话框是全局的,并且由每个 ajax 请求使用,因此全局删除也不起作用。

最佳答案

给每组对话框一个唯一的类 - 也许是“set”+一个唯一的、递增的变量。在递增变量之前,请在创建新对话框之前调用 $('.set' +incrementVal).dialog("destroy"); 来消除旧对话框。听起来可行吗?

例如:

globalIncrement = 0;
function createDialogs() {
    globalIncrement += 1;
    $('div#main').append('<div class="set' + globalIncrement + '">test Dialog</div>');
    if(globalIncrement > 1) {
        $('div.set' + (globalIncrement - 1)).dialog("destroy");
        //Also, remove the <div> from the DOM:
        $('div.set' + (globalIncrement - 1)).remove();
    }
}

关于javascript - 单ajax页面仪表板上的jquery模态复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16268517/

相关文章:

javascript - CSS 和 Javascript/jQuery - 类似于 Facebook 的可折叠 DIV 部分

javascript - 无法在 IE 中的 tbody 上设置 innerHTML

javascript - Google Analytics 出站链接事件跟踪

javascript - 数据表即时调整大小

jquery - 如何使 JQuery 在文本右侧(而不是下方)显示悬停图像?

javascript - 如何在 blueimp jquery 下载程序中过滤要下载的文件

javascript - 如何使用 grunt-contrib-jasmine 工作 jasmine-ajax

javascript - Webpack 更改特定包的导入路径

php - 如何使用 Shopify API 将商品添加到购物车

javascript - 包含数组的对象 - 是否有更简单的方法来编写这种常见模式