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

如何在fullcalendar v3.1中高亮gotodate函数定位到的特定事件?

问题根因

调用gotoDate跳转日期后,FullCalendar需要异步完成新视图的事件渲染,你在跳转后立刻执行DOM选择操作时,对应事件元素还未挂载到页面上,所以选择器匹配失败,样式修改不生效。

修复方案

方案1(推荐:监听渲染回调,稳定性高)

首先在日历初始化配置中添加viewRender回调,该回调会在视图渲染完成后触发:

// 全局变量存储待高亮的目标日期
let targetHighlightDate = null;

// 你的日历初始化逻辑
$("#calendar").fullCalendar({
  // 保留你原来的所有配置项,新增以下配置
  viewRender: function(view, element) {
    if (targetHighlightDate) {
      $(`.fc-event-dot[data-date="${targetHighlightDate}"]`).css('background-color', '#a31a5c');
      targetHighlightDate = null;
    }
  }
});

修改搜索点击逻辑:

$("#btnsearch").click(function () {
  var res = $("#txtSearch").val();
  res = res.substring(0,19);
  const date = moment(res, "DD/MM/YYYY HH:mm");
  // 先赋值待高亮日期,注意format格式要和元素上的data-date属性完全一致
  // 可先F12查看现有.fc-event-dot的data-date实际格式,调整format参数
  targetHighlightDate = date.format("YYYY-MM-DD HH:mm:ss");
  // 再执行日期跳转
  $("#calendar").fullCalendar('gotoDate', date);
});

方案2(简易兜底)

如果不想修改日历初始化配置,可添加短延迟等待渲染完成后再修改样式:

$("#btnsearch").click(function () {
  var res = $("#txtSearch").val();
  res = res.substring(0,19);
  const date = moment(res, "DD/MM/YYYY HH:mm");
  $("#calendar").fullCalendar('gotoDate', date);
  // 延迟时间可根据实际渲染速度调整
  setTimeout(() => {
    $('.fc-event-dot[data-date="' + date.format("YYYY-MM-DD HH:mm:ss") + '"]').css('background-color', '#a31a5c');
  }, 300);
});

注意事项

如果修改后仍不生效,先打开浏览器开发者工具,查看页面上已加载的.fc-event-dot元素的data-date属性实际格式,调整date.format()的参数与其完全匹配即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:00:00