javascript - 在 FullCalendar v4 中添加自定义右键单击上下文菜单
问题描述
我试图允许用户左键单击或右键单击 FullCalendar 的 dayGrid 视图中的事件。左键单击应该(并且确实)显示有关事件的一些信息,而右键单击应该提供一个自定义上下文菜单,我可以链接到应用程序的其他部分(例如编辑或删除事件)。
我无法使用右键单击功能,因为 eventClick 方法只响应左键单击。我曾尝试使用 mousedown 方法,但似乎无法使其正常工作。
理想情况下,我会有一些像这个小提琴中的代码一样工作的东西: https ://jsfiddle.net/p52gohwn/
但是,此代码不适用于 FullCalendar v4,因为它依赖于element
eventRender 方法的属性,该方法在 FullCalendar v4 中不再可用(仅info
可用)。
解决方案
我找到了一个不错的 JS 插件,用于添加右键单击上下文菜单功能:https ://swisnl.github.io/jQuery-contextMenu/
完整的 GitHub 存储库位于:https ://github.com/swisnl/jQuery-contextMenu
它很容易在 FullCalendar 中实现,只需添加一个函数并单击上下文菜单的处理程序(示例来自http://swisnl.github.io/jQuery-contextMenu/demo.html的文档):
$(function() {
$.contextMenu({
selector: '.context-menu-one',
callback: function(key, options) {
var m = "clicked: " + key;
window.console && console.log(m) || alert(m);
},
items: {
"edit": {name: "Edit", icon: "edit"},
"cut": {name: "Cut", icon: "cut"},
copy: {name: "Copy", icon: "copy"},
"paste": {name: "Paste", icon: "paste"},
"delete": {name: "Delete", icon: "delete"},
"sep1": "---------",
"quit": {name: "Quit", icon: function(){
return 'context-menu-icon context-menu-icon-quit';
}}
}
});
$('.context-menu-one').on('click', function(e){
console.log('clicked', this);
})
});
然后简单地修改所有需要右键单击的元素的类名(在本例中为事件)以包含类“context-menu-one”:
eventRender: function(info) { //Run when events are rendered
info.el.className = info.el.className + " context-menu-one"
}
推荐阅读
- installation - 在 Mac Mojave 安装 Ros 动力学
- c# - 根据多个选定的列表框项目在列表框中显示数据
- javascript - 如何处理首屏隐藏的图像
- python - ValueError:GeoDataFrame 的真值不明确
- amazon-web-services - 构建工件忽略 aws codebuild 中的空文件夹
- c - C中链表的指针基数和顶部
- mobile - 是否有任何关于使用 TF Lite 的 OCR 示例/演示?
- php - wp-config.php 文件中的 Wordpress WP_CACHE_KEY_SALT 值错误
- html - 如何将 CSS Top 与它的父元素一起使用,而不是它相对于文档的值
- javascript - 如何使 bxSlider 中的图像全屏显示?