1

我正在使用 Primefaces Schedule 组件在我的网络应用程序中呈现事件。但我需要和他做个小把戏。对于每个呈现的事件,我需要显示一个带有事件详细信息的工具提示。使用 window.onload 监听器和一些 jquery 函数很容易显示当前日期框架的工具提示。但是,由于当我按下下一个和上一个按钮时,日程表使用 ajax 显示下一个日期帧,所以工具提示会崩溃。我试过使用:

window.addEventListener('DOMSubtreeModified', function(){
    // create bubble popups
    $('.fc-event-inner.fc-event-skin').CreateBubblePopup( options );
}, false);

但似乎它需要太多处理并且页面变慢。还有其他方法可以将工具提示添加到呈现的每个事件中吗?

4

1 回答 1

3

试试这样:

$(window).load(function() {
   $(document).delegate(".fc-event-inner", "mouseenter mouseover", function(event){
       $('.fc-event-inner.fc-event-skin').CreateBubblePopup( options );

   });
});

更新

我有这种感觉,他们在调度程序 js 文件中的某个stopPropagation()地方mouseover...

从位于primefaces-3.4.1-sources\META-INF\resources\primefaces\schedule 的js 文件中查看以下代码

/* Event Element Binding
-----------------------------------------------------------------------------*/


function lazySegBind(container, segs, bindHandlers) {
    container.unbind('mouseover').mouseover(function(ev) {
        var parent=ev.target, e,
            i, seg;
        while (parent != this) {
            e = parent;
            parent = parent.parentNode;
        }
        if ((i = e._fci) !== undefined) {
            e._fci = undefined;
            seg = segs[i];
            bindHandlers(seg.event, seg.element, seg);
            $(ev.target).trigger(ev);
        }
        ev.stopPropagation();
    });
}

所以...

尝试删除ev.stopPropagation();

顺便说一下,调度器实际上是一个FullCalendar jQuery 插件,所以如果你在谷歌上搜索fullcalendar 工具提示,你可能会找到一些有用的信息。

这是修改后的Primefacess 3.4 jar的链接(stopPropagation调度程序事件没有)

于 2012-10-04T21:08:43.770 回答