jQuery UI 对话框和 pjax

发布于 2024-11-24 00:19:52 字数 389 浏览 1 评论 0原文

我在一个具有一些 jQuery UI 对话框的 Web 应用程序中使用 pjax。

我遇到的问题是,当创建对话框时,用于创建对话框的 div 元素被移出了 dom 中的容器。

当 pjax 加载新页面时,对话框 div 不会被销毁,因为它不再位于 pjax 加载内容的容器内。当 pjax 导航回带有对话框的页面时,它会加载 div 元素的第二个副本,并且由于 dom 中存在重复的元素,一切都会变得有问题。

有没有人找到解决这个问题的优雅方法?有没有办法清理 jQuery UI 对话框调用所做的所有 dom 更改?

我还应该提到这个问题并不是 pjax 特有的。如果我简单地使用 $("#mycontainer").load("page-with-dialog.html"); 也会发生同样的事情

I'm using pjax in a web app that has some jQuery UI dialogs.

The problem I'm running into is that the div element used to create the dialog is moved out of its container in the dom when the dialog is created.

When pjax loads a new page, the dialog div is not destroyed because it no longer lives inside the container that pjax loads content into. When pjax navigates back to the page with the dialog, it loads a second copy of the div element and everything gets buggy because of the duplicated elements living in the dom.

Has anyone found an elegant solution to this problem? Is there a way to clean up all the dom changes made by the jQuery UI dialog call?

I should also mention that the issue isn't specific to pjax. The same thing happens if I simply use $("#mycontainer").load("page-with-dialog.html");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦毁影碎の 2024-12-01 00:19:52

将div样式设置为display:none并重复使用相同的,不要破坏它。

<div id="dialog" class="ui-helper-hidden">
</div>

set the div style to display:none and reuse the same one, don't destroy it.

<div id="dialog" class="ui-helper-hidden">
</div>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文