我的完整代码在这里:http://pastebin.com/nctMtX9m
我有一个FullCalendar的实例,并使用事件对象的'className'属性,我在日历渲染后向某些事件添加图标。这些简单的图标表示日历上的作业(事件)是否已发送。
$(window).load(function(){
$('a.shipped div span').prepend("<img src="/img/truck_white.png" title="Shipped" alt="Shipped" style="padding:2px 5px 5px 0; width="16" height="16" />");});
这个工作很棒!问题是,每当我改变视图,比如改变月份,然后回来,FullCalendar完全重新渲染事件!这意味着他们现在没有我的图标,因为我的图标添加过程只发生一次,在初始渲染之后。
我需要我的图标添加进程,每次FullCalendar渲染事件时触发。
我发现了这个:http://arshaw.com/fullcalendar/docs/event_data/events_function/但不幸的是,我的偶数是由PHP写到页面,所以它们是静态定义的,就脚本而言。这个例子让我相信,我只能使用外部数据源来实现这一点。这个级别的JavaScript显然不是我的强项。
如果我的事件数据是静态定义的,我如何将我的图标添加到每次Fullcalendar呈现事件时触发的过程中?
谢谢!
编辑我发现了如何使用eventRender做我想做的事情,但我似乎无法引用我想要的元素的部分,因为现在渲染稍微关闭。我将进一步研究这个问题,并在找到答案时更新。
编辑2明白了,因为我是新来的,所以不能发布答案。
解决方案是使用eventRender。
eventRender: function(event, element) {
if(event.className == 'shipped'){
var find = '<span class="fc-event-title">';
var replace = find + '<img src="/img/truck_white.png" title="Shipped" alt="Shipped" class="event_icon" />';
var newHTML = $(element).html().replace(find, replace);
$(element).html(newHTML);
}
}
这是一个有点复杂的查找/替换,但它工作。