我正在努力检索单击多天(期间)事件 (eventClick) 时单击的日期。

单击背景单元格时,很容易:

function dayClick(date, jsEvent, view) {

   //todo: store related day
   $scope.selectedDay = date;
}

但是当点击一个事件(在一段时间内)时,我无法检索到用户在哪一天。 (我需要根据后台日期执行不同的操作):
function alertEventOnClick(event, jsEvent, view) {

            // "event" stores only start and end date without any reference to the current day
            // "jsEvent" retrieve the "td" element but fullcalendar HTML structure is complex and it's impossible to go-up to find the day-cell
            // $scope.selectedDay = ??
        };

我尝试玩“可选择”但“eventClick”JS事件不会传播,也不会“选择”这一天

谢谢

最佳答案

如果您根本不需要捕获事件点击,则可以使用 pointer-events: none; 向所有事件添加一个类

JSFiddle Demo

eventRender: function (event, element) {
    $(element).addClass('clickThrough');
},

IE8

布莱。有一种 hacky 方法可以在 IE8 上模拟 pointer-events: none;,但在尝试实现它时,我发现了一种更简单的方法来实现目标。 (模拟的 pointer-events hack 描述为 here 。)

获取光标处的日期:
  • 隐藏事件表
  • 获取光标下的元素
  • 显示事件表

  • JSFiddle Demo
    eventClick: function (calEvent, jsEvent, view) {
        var topLayer = $(jsEvent.currentTarget).closest("tbody");
        topLayer.hide(); //hide the entire event layer (makes it work with multiple events)
        var dayElement = document.elementFromPoint(jsEvent.pageX, jsEvent.pageY); //get the element under the cursor (should be a day cell)
        topLayer.show();
        alert($(dayElement).data("date"));
    }
    

    更好的 IE8 解决方法

    (这似乎不起作用)

    所以事实证明, anchor 标签有更好的 pointer-events: none; 解决方法。 https://stackoverflow.com/a/18118092/728393

    您只需将属性 disabled="disabled" 添加到 <a> 中,就可以点击它。

    JSFiddle Demo
    eventRender: function (event, element) {
        $(element).addClass('clickThrough').attr("disabled","disabled"); //disabled attribute is a IE workaround for pointer-events
    },
    

    关于javascript - Fullcalendar (v2.x) 从 eventClick 获取日单元格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28115122/

    10-12 20:56