我的网页上有完整日历。日历有事件。在dayClick
事件处理程序上,我正在调用一个函数。
问题是第一次点击一天时该功能被调用一次。第二次调用该函数2次,第3次调用3次......依此类推。
我可以猜测问题是日期点击事件没有分离。但我无法解决。
代码:
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
eventLimit: true,
defaultView: 'month',
editable: false,
eventClick: function (event) {
if (event.url) {
window.open(baseUrl + event.url);
return false;
}
},
dayClick: function (date, allDay, jsEvent, view) {
var dateString = '';
dateString = moment(date, 'YYYY-MM-DD').format().split('T')[0];
$('#popup').modal('toggle');
$('#popup').on('shown.bs.modal', function () {
AsyncFn().done(function (result) {
AnotherAsyncFn(function () {
SomeFunction(); //This function gets called multiple times
});
});
});
}
});
我不知道如何分离此事件。可以使用off
或unbind
,但不知道具体如何。
任何人都可以提供一些帮助吗?
答案 0 :(得分:3)
您应该使用off
方法。
$('#popup').on('shown.bs.modal', function () {
$('#popup').off('shown.bs.modal');
AsyncFn().done(function (result) {
AnotherAsyncFn(function () {
SomeFunction(); //This function gets called multiple times
});
});
});
答案 1 :(得分:0)
在再次附加活动之前尝试使用jQuery.unbind()
。
dayClick: function (date, allDay, jsEvent, view) {
var dateString = '';
dateString = moment(date, 'YYYY-MM-DD').format().split('T')[0];
$('#popup').modal('toggle');
$('#popup').unbind("shown.bs.modal").on('shown.bs.modal', function () {
AsyncFn().done(function (result) {
AnotherAsyncFn(function () {
SomeFunction(); //This function gets called multiple times
});
});
});
}