gpt4 book ai didi

javascript - 替换内容后点击内容关闭 Magnific 弹出窗口

转载 作者:行者123 更新时间:2023-11-29 15:42:23 26 4
gpt4 key购买 nike

我正在使用 Magnific Popup 版本 0.8.9。

我正在通过 Ajax 将内容加载到其中,并使用 ajaxContentAdded 的回调。此回调设置一个事件处理程序,用于提交加载到弹出窗口中的表单,如下所示:

$('.add-item-btn').magnificPopup({ 
type: 'ajax',
closeOnContentClick: false,
callbacks: {
ajaxContentAdded: HandleItemFormSubmit
}
});

这工作正常,表单提交被正确处理。事件处理函数将其发布到服务器,服务器(在出现错误的情况下)返回包括错误消息在内的整个表单。为此,我让它用返回的表单替换弹出窗口的内容,并再次设置提交处理程序。

function HandleItemFormSubmit()
{
var popup = this;
// Submit form using ajax
$('form.item-form').submit(function()
{
var data = $(this).serialize();
var url = $(this).attr('action');

$.post(url, data, function(resp)
{
if (resp == 'OK')
{
// All good, close up
popup.close();
}
else
{
// Show HTML from response (with errors)
popup.closeOnContentClick = false;
popup.content.replaceWith(resp);
popup.updateItemHTML();
HandleItemFormSubmit();
}
});

return false;
});
}

但是,尽管在两个不同的点将 closeOnContentClick 设置为 false,但在内容被替换后单击内容时弹出窗口会立即关闭(第一次确实有效)。

顺便说一下,弹出窗口中的内容只有一个根元素。

我希望作者或其他人能在这里提供帮助,我不知道这里有什么问题。

非常感谢!

最佳答案

我找到了另一种解决方案:

$('html').on('submit', '#UR_FORM', function(e) {
e.preventDefault();
$.ajax({
data: $(this).serialize(),
type: $(this).attr('method'),
url: $(this).attr('action'),
success: function(response) {
var magnificPopup = $.magnificPopup.instance;
magnificPopup.items[0].type = "inline";
magnificPopup.items[0].src = response;
magnificPopup.updateItemHTML();
}
});
});

关于javascript - 替换内容后点击内容关闭 Magnific 弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17250620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com