You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FullCalendar拖拽事件时如何隐藏popover,结束拖拽后恢复显示?

嘿,这个需求我之前做FullCalendar的时候刚好碰到过,其实利用FullCalendar自带的拖拽/调整事件就能轻松搞定!给你一步步拆解解决方案:

1. 先给日程元素加个唯一标识(可选但更精准)

在你现有的eventRender回调里,给生成的日程元素加上对应事件的ID标记,这样后面能精准定位到当前操作的元素,避免误操作其他popover:

eventRender: function(event, elemento, resource, view) { 
    var start = $.fullCalendar.formatDate(event.start, "DD-MM-Y HH:mm"); 
    var end = $.fullCalendar.formatDate(event.end, "DD-MM-Y HH:mm"); 
    // 给元素绑定事件ID,方便后续定位
    elemento.attr('data-event-id', event._id);
    elemento.popover({ 
        title: start + ' — ' + end, 
        content: event.title, 
        trigger: 'hover', 
        placement: 'top', 
        container: 'body' 
    }); 
}

2. 拖拽/调整开始时隐藏popover

当用户开始拖拽或者调整日程大小时,我们直接隐藏所有已打开的popover(或者精准定位当前元素的),避免popover跟着乱跑影响体验:

// 拖拽开始触发
eventDragStart: function(event, jsEvent, ui, view) {
    // 隐藏所有已激活的popover
    $('[data-toggle="popover"]').popover('hide');
    // 要是想精准只关当前操作的,就用下面这句:
    // $('[data-event-id="' + event._id + '"]').popover('hide');
},
// 调整大小开始触发
eventResizeStart: function(event, jsEvent, ui, view) {
    $('[data-toggle="popover"]').popover('hide');
}

3. 停止操作后重新唤起popover

当拖拽或调整结束时,我们给当前的日程元素触发mouseenter事件(因为你的popover是hover触发的,hover本质就是mouseenter和mouseleave的组合),这样就能自动重新显示popover了:

// 拖拽结束后显示
eventDragStop: function(event, jsEvent, ui, view) {
    var $targetEvent = $('[data-event-id="' + event._id + '"]');
    // 触发mouseenter唤起popover
    $targetEvent.trigger('mouseenter');
},
// 调整大小结束后显示
eventResizeStop: function(event, jsEvent, ui, view) {
    var $targetEvent = $('[data-event-id="' + event._id + '"]');
    $targetEvent.trigger('mouseenter');
}

小提示

如果你的FullCalendar是v4及以上版本,注意事件名称和参数会有变化哦,比如eventRender改成了eventDidMount,事件对象的属性也会不同,需要稍微调整适配。另外要是碰到popover位置偏移的情况,可以在触发mouseenter前先更新下popover的位置:$targetEvent.popover('update').trigger('mouseenter');

内容的提问来源于stack exchange,提问作者Alexander Frolov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:10:49