好的,所以我在设置选项时遇到问题,在插件初始化后尝试设置它们时,这些选项的值是回调函数。我认为这是一种常见的行为,在初始化日历后动态设置事件回调。
以下是代码片段:
$(document).ready(function() { $('#calendar').fullCalendar({ editable: false ,events:[{"title":"meeting.title","start":"2010-05-21 15:58:16 UTC"},{"title":"meeting.title","start":"2010-05-24 15:58:16", "url":"http://google.com"}] /* ,eventClick: function(event) { if (event.url) { window.open(event.url); return false; } } */ }); $('#calendar').fullCalendar('option', 'eventClick', function(event) { if (event.url) { window.open(event.url); return false; } }); });
您可以看到将eventClick函数设置为注释掉的init选项。如果我这样做,它工作正常。但是,如果我尝试在init之后设置它,它就不起作用:(
是否有其他方法可以做到这一点?或者我不得不提前设置行为?
答案 0 :(得分:1)
显然我相信你已经解决了这个问题,但是对于任何可能遇到这个问题的人来说,这就是我如何解决这个问题。
$(document).ready(function() {
$('#calendar').fullCalendar({
editable: false
,events:[{"title":"meeting.title","start":"2010-05-21 15:58:16 UTC"},{"title":"meeting.title","start":"2010-05-24 15:58:16", "url":"http://google.com"}]
,eventClick: function(event) {eventClickCustom(event)}
});
var eventClickCustom = function(event)
{
//do what you want here, you can can update this function all you want.
}
//then later
var eventClickCustom = function(event)
{
//updated version of the function
}
答案 1 :(得分:0)
fullCalendar eventClick
是callback method。查看完代码后,我认为您无法在初始化日历后添加此选项。我甚至尝试将eventClick函数添加到日历的数据中(它存储公共函数)。所以,我能想到的唯一选择是附加你自己的事件处理程序。你可以试试这个:
$('#calendar').find('.fc-event,.ui-event').find('a[href]').live('click', function(){
window.open( $(this).attr('href') );
return false;
})
哦,我定位.fc-event
和.ui-event
类的原因是因为它会因您使用theme
选项而改变。