4

在 jquery 完整日历中创建事件时,我需要显示一个弹出窗口(如 google 日历中的气球弹出窗口)。

弹出窗口的任何最佳插件都显示为气球并且还处理点击事件(我用来从弹出窗口创建/编辑/删除事件)?

4

7 回答 7

5

我已经将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

于 2010-03-27T10:06:42.190 回答
2

qTip插件可以处理工具提示中的任意内容,包括分配事件处理程序的能力以及获得更丰富功能的能力

请参阅演示

于 2009-12-22T04:59:55.640 回答
2

我编写了自己的弹出窗口,它使用具有绝对位置的 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();来计算鼠标点击的位置并显示弹出窗口。

于 2009-12-26T14:46:49.483 回答
1

这是我的实现。我在悬停时这样做了,如果你想点击,只需更改事件处理程序

$('#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}
于 2013-01-24T15:13:31.707 回答
0

“气球”插件本身不需要处理点击事件,因为 fullcalender 已经为此提供了一个配置的回调......

    $('#calendar').fullCalendar({
        eventClick: function(calEvent, jsEvent){
            // ... your code here ...
        }
    });

如果您正在寻找工具提示样式的“气球”,推荐的 Qtip 是一个不错的选择。您可以根据需要使用 eventClick 函数动态创建工具提示,也许从其他地方获取提示的内容。

于 2009-12-22T05:18:46.173 回答
0

试试这个……它是基于 ajax 的,但如果你愿意,你可以删除它。你也可以将你的事件绑定到你想要的控件。

jquery ajax 工具提示

于 2009-12-22T05:20:34.663 回答
-1

如果弹出窗口不适合您,请尝试使用旧版本的 jquery。

我尝试使用 jquery-1.4,它现在可以工作了。我尝试使用 jquery-1.2.6 并且效果很好。

请参阅有关使用旧 jquery 使 qtips 工作的讨论

于 2010-11-01T17:41:45.110 回答