jquery - FullCalendar 在悬停时在单元格中显示时间

标签 jquery css fullcalendar

我正在尝试在 fullcalendar.io 中实现小功能。

当我将鼠标悬停在 weekView 或 dayView 中的指定单元格时,我需要我的日历显示现在几点。 现在我要指出这次日历何时显示我,但只在整行中使用 viewRender 方法中的此代码:

$('#calendar').find('.fc-slats').find('[class="fc-widget-content"]').hover(
function() {
    var tr = $(this).parent();
    var time = tr.find('td.fc-axis.fc-time.fc-widget-content').find("span").text();
    $(this).append('<td class="temp_cell" style="border: 0px; width:5px;">'+time+'</td>');
},          
function() {                        
    $(this).children('.temp_cell').remove();
});

这是我的代码:jsfiddle.net/przemekp/w71rd9yz/

有谁知道如何在每个指定的星期几的单元格中显示这个。

最佳答案

我也是,我一直在寻找实现此功能的方法。 经过数小时的大量尝试/错误编码后,这是我的技术:

首先,我的全日历对象被命名为“semaine”。 (我是法国人...) 我正在使用“议程” View (显示一周中的所有日子)

这是我的全日历对象的定义: $('#semaine').fullCalendar({ ... select: function(ehDeb, ehFin, jsEvent, vue) { eraseAllCellTime($('#semaine')); .... }, eventMouseover: function(event, jsEvent, view) { eraseAllCellTime($('#semaine')); },<br/> .... });

就在这个定义之后,我重写了这三个回调函数:

$('#semaine').find('.fc-slats').find('[class="fc-widget-content"]').mouseover(
    function(mouseEvent) {
        displayCellTime($('#semaine'), this, mouseEvent);
    }
);
$('#semaine').find('.fc-slats').find('[class="fc-widget-content"]').mouseenter(
    function(mouseEvent) {
        displayCellTime($('#semaine'), this, mouseEvent);
    }
);
$('#semaine').mouseleave(
    function() {
        eraseAllCellTime($('#semaine'));
    }
);

现在有两个函数:

function eraseAllCellTime(calendar) {
    calendar.find('.fc-slats').find('[class="fc-widget-content"]').each(function() {
        $(this).empty();
    });
}

function displayCellTime(calendar, tdAllDays, mouseEvent) {
    // We remove all td cell contents
    eraseAllCellTime(calendar);
    // and we display the good cell
    var tr = $(tdAllDays).parent();
    var time = tr.find('td.fc-axis.fc-time.fc-widget-content').find("span").text();
    var dayColumns = calendar.find('th.fc-day-header');
    var html = '<table class="dailycolumncutting">';
    html += '<tr>';
    var mouseX = mouseEvent.clientX;
    var mouseY = mouseEvent.clientY;
    for(var d = 0; d < dayColumns.size(); d++) {
        var day = $(dayColumns[d]);
        var offset = day.offset();
        var width  = day.width();
        if (mouseX >= offset.left && mouseX <= offset.left+width) {
            html += '<td class="hovered">' + day.data("date") + '<br />' + time + '</td>';                            
        } else {
            html += '<td>&nbsp;</td>';
        }
    }
    html += '</tr>';
    html += '</table>';
    $(tdAllDays).empty();
    $(tdAllDays).append(html);
}

最后是 css 定义:

.dailycolumncutting td {
    width: 100%;
}
.dailycolumncutting td.hovered {
    text-align: center;
    background-color: #ff000055;
}    

你当然可以改进它,但它可以为你提供满足你需要的基础......

关于jquery - FullCalendar 在悬停时在单元格中显示时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42907508/

相关文章:

javascript - 悬停时激活引导下拉菜单

javascript - jQuery 和 Bootstrap 脚本搞乱了

php - 网站上有现成的埃塞俄比亚日历吗?

fullCalendar (v5) 回调/处理程序随时呈现 View ?

javascript - 防止 jQuery 在元素移除时取消绑定(bind)事件

jquery - 没有内联样式时的 element.style

javascript - jstree 以树状数组形式获取数据

javascript - JS获取滚动实例高度

javascript - 如何在 x 秒后停止 jquery 动画

python - 确定 Django 模板中元素的高度