javascript - javascript保留旧变量
问题描述
我正在使用 JQueryFullCaledar 并编写了一个函数来劫持 eventclick。默认情况下,它只运行以下代码:
var id = event.id;
$.ajax({
url:"delete.php",
type:"POST",
data:{id:id},
success:function()
{
calendar.fullCalendar('refetchEvents');
//alert("Event Removed");
}
})
我劫持了这个事件,而是打开一个提供三个选项的上下文菜单:
编辑、删除关闭菜单。如果他们选择删除,它将运行与以前相同的功能,但使用 if 语句(由甜蜜警报辅助)来检查他们是否确定。
如果他们选择关闭,它只会关闭菜单
如果他们选择编辑,它会通过 AJAX 将约会的 ID 发送到 PHP 文件,以便我可以更新它。我注意到在更新其中的一堆时,前几次打开后约会不正确。因此,我在运行 AJAX 之前添加了一个捕获来提醒约会的 ID。当我打开我的第一个约会时,我会收到一个带有第一个约会 ID 的警报。我关闭它,然后打开另一个,此时我首先收到带有第一个 ID 的警报,然后是第二个带有新 ID 的警报,然后打开另一个约会给我这两个警报和第三个带有第三个约会 ID 的警报,依此类推。 ..我尝试在单击取消或保存编辑文件时将ID设置为空白,但没有运气。
这是事件点击功能的完整代码:
eventClick:function(event)
{
$('.appt_menu').removeClass('hidden').css( {position:"absolute", top:event.pageY, left: event.pageX});
$('a.close_menu').on("click",function(){
$('.appt_menu').addClass('hidden');
})
$('a.edit_appt').on("click",function(){
$('.appt_menu').addClass('hidden');
//show me the ID before sending it via AJAX
alert(event.id);
$('#modalwindow').load("Form_Edit_Appt.php", {id: event.id}, function(data) { calendar.fullCalendar('refetchEvents');});
$('.backdropper, #modalwindow').addClass('show');
}); //end of edit appt function
$('a.delete_appt').on("click",function(){
$('.appt_menu').addClass('hidden');
swal({
title: "Are you sure you want to delete this Appointment?",
text: "Once deleted, you will not be able to recover this imaginary file!",
icon: "warning",
buttons: ["Not that one!", "Yep, delete it!"],
//buttons: true,
dangerMode: true,
})
.then((willDelete) => {
if (willDelete) {
swal("Your Appointment has been deleted!", {
icon: "success",
});
var id = event.id;
$.ajax({
url:"delete.php",
type:"POST",
data:{id:id},
success:function()
{
calendar.fullCalendar('refetchEvents');
//alert("Event Removed");
}
})
} else {
swal("Your Appointment has not been removed!");
}
});
})
},
解决方案
每次执行初始 eventClick 时,您都在绑定事件处理程序。每次设置单击处理程序时尝试使用 off() 取消绑定,以便删除任何先前设置的处理程序。
例子:
$('a.edit_appt').off().click(function() {
//your code
});
推荐阅读
- c# - 按下按钮时在 MVC 中加载数据
- python-3.x - 附加列表项会创建重复项
- python - 如何使用 Python 通过 Strava API 访问身份验证?
- ruby - 如何在 Github 工作流上运行 Ruby 脚本
- reactjs - React-hook-form 输入字段匹配验证最佳实践
- flutter - 将 Python 与 Flutter 连接以实现基于 Web 的解决方案
- mysql - 如何在 Where In Query (Mysql) 中为每个项目获取相等的行数
- django - 是否可以包装 Django 代码以确保 ORM 的所有数据库访问默认设置为“使用”?
- node.js - 在 NodeJS 中检测 GRPC 服务器故障
- python - 在纯 Python 中创建特定矩阵