在 jquery 完整日历中创建事件时,我需要显示一个弹出窗口(如 google 日历中的气球弹出窗口)。
弹出窗口的任何最佳插件都显示为气球并且还处理点击事件(我用来从弹出窗口创建/编辑/删除事件)?
在 jquery 完整日历中创建事件时,我需要显示一个弹出窗口(如 google 日历中的气球弹出窗口)。
弹出窗口的任何最佳插件都显示为气球并且还处理点击事件(我用来从弹出窗口创建/编辑/删除事件)?
我已经将QTip与 fullCalendar 一起使用,效果很好!
$('#calendar').fullCalendar({
...
eventRender: function(event, element, view)
{
element.qtip({ content: "My Event: " + event.title });
}
...
});
只需确保您在 fullCalendar 的 eventRender 事件中定义了您的 qtip。:)
我注意到的唯一问题(使用 JQuery 1.3)是,当 qtip 弹出窗口淡入时,它会在 fullCalendar 的样式网格后面开始淡入。在前〜几帧之后,它很好。此外,这很可能是我在项目中进行的其他一些事情的问题。我懒得进一步调试它,所以你的里程可能会有所不同。;p
我编写了自己的弹出窗口,它使用具有绝对位置的 div 显示。
<div id="addEvent" style="display: none; position: absolute; width: 400px; z-index: 1000;">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td>
<div class="PopupContainer">
<div class="header">
<img src="<%= ResolveUrl("~/Content/images/closepopup.gif") %>" id="addCalEventClose"
title="Close" alt="Close" class="cursorhand" />
</div>
<div class="clear" />
<div class="popup">
//Your content goes here
</div>
</div>
<div class="clear" />
<br />
</td>
</tr>
<tr>
<td>
<div style="margin-top: -1px">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="taC">
<img src="<%= ResolveUrl("~/Content/images/balloon_arrow.gif") %>" title="" alt=""
id="addEventBalloon" />
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
用一些javascripting调用 $('#addEvent').css({ left: xPos, top: yPos }).show().fadeIn();
来计算鼠标点击的位置并显示弹出窗口。
这是我的实现。我在悬停时这样做了,如果你想点击,只需更改事件处理程序
$('#calendario').fullCalendar({
events: "/includes/json-events.php",
eventDrop: function(event, delta) {
alert(event.title + ' was moved ' + delta + ' days\n' +
'(should probably update your database)');
},
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
},
eventMouseover: function( event, jsEvent, view ) {
var item = $(this);
if(item.find('.nube').length == 0){
var info = '<span class="nube"><h2>'+event.title+'</h2><img src="'+event.avatar+'" /> <p class="text">'+event.name+'</p><p>'+event.start+' <br /> '+event.end+'</p><p><a href="/post.php?blogid='+event.id+'">read_more</a></p></span>';
item.append(info);
}
if(parseInt(item.css('top')) <= 200){
item.find('.nube').css({'top': 20,'bottom':'auto'});
item.parent().find('.fc-event').addClass('z0');
}
item.find('.nube').stop(true,true).fadeIn();
},
eventMouseout: function( event, jsEvent, view ) {
var item = $(this);
item.find('.nube').stop(true,true).fadeOut();
},
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
eventRender: function(event, element) {
}
});
并且,至少:
.nube{ position: absolute;left:0;top:0}
“气球”插件本身不需要处理点击事件,因为 fullcalender 已经为此提供了一个配置的回调......
$('#calendar').fullCalendar({
eventClick: function(calEvent, jsEvent){
// ... your code here ...
}
});
如果您正在寻找工具提示样式的“气球”,推荐的 Qtip 是一个不错的选择。您可以根据需要使用 eventClick 函数动态创建工具提示,也许从其他地方获取提示的内容。
试试这个……它是基于 ajax 的,但如果你愿意,你可以删除它。你也可以将你的事件绑定到你想要的控件。
如果弹出窗口不适合您,请尝试使用旧版本的 jquery。
我尝试使用 jquery-1.4,它现在可以工作了。我尝试使用 jquery-1.2.6 并且效果很好。