所以我最近使用 jQuery contextMenu (http://abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/) 在 FullCalendar 中的事件中添加了一个上下文菜单。它工作得很好,除了我的拖/放功能停止正常工作,当您拖动事件并放开另一个日期时,事件日期不会更改,并且它会重定向到事件的 url。我做了一些检查,发现 eventDrop、eventDragStart 和 eventClick 都没有被触发。如果我注释掉上下文菜单,一切都会正常。如果有人能弄清楚为什么 contextMenu 阻止 fullCalendar 回调被触发,我将不胜感激,因为 contextMenu 完全适合我的需求。 contextMenu 和事件回调的代码:
eventRender: function(event, element) {
if (event.url.indexOf("https://www.google.com") != 0)
{
element.contextMenu({
menu: "myMenu",
},
function(action, el) {
if (action == "approve") {
$.ajax({
url: 'events/' + event.id,
data: { 'event' : { 'status' : "Approved", } },
type: "PUT",
}),
$('#calendar').fullCalendar('refetchEvents');
} else if (action == "deny") {
$.ajax({
url: 'events/' + event.id,
data: { 'event' : { 'status' : "Denied", } },
type: "PUT",
}),
$('#calendar').fullCalendar('refetchEvents');
} else if (action == "destroy") {
if (confirm("Are you sure you want to delete this event?") ) {
$.ajax({
url: 'events/' + event.id,
type: "DELETE",
}),
$('#calendar').fullCalendar('refetchEvents');
}
}
else if (action == "edit") {
window.location = 'events/' + event.id + '/edit'
}
}
);
}
},
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc){
updateEvent(event);
},
eventResize: function(event, dayDelta, minuteDelta, revertFunc){
updateEvent(event);
},
eventClick: function(event) {
if (event.url.indexOf("https://www.google.com") != 0) {
$.facebox(function() {
$.get('events/' + event.id,
function(data) {
$.facebox(data)
}
);
})
return false;
}
return false;
}
最佳答案
好吧,因为看起来这不会得到回答,所以我的解决方案是切换到不同的上下文菜单插件(http://www.trendskitchens.co.nz/jquery/contextmenu/),该插件非常相似并且没有对完整日历造成任何问题。这并不是解决阻止此插件使用完整日历的任何问题,而是解决让我的程序正常运行的问题。
关于jquery - contextMenu 破坏 FullCalendar 事件拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7044651/