1

我的完整代码在这里: 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想通了,不能发布答案,因为我是新人。明天会发布答案。

4

1 回答 1

1

解决方案是使用 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);
}
}

这有点令人费解的查找/替换,但它确实有效。

于 2013-03-21T14:16:53.787 回答