2011-09-01 63 views
0

我有一个fullCalendar页面,我正在使用qTip(v2)。问题是qTip提示真的很慢,有时似乎得到了mouseover事件,所以我必须重新进行鼠标悬停然后启动它。我有一个ajax调用,我认为可能会减慢它,但是当我删除ajax调用时,没有区别。fullcallendar和qTip非常慢

下面的代码是fullcalendar的eventMouseover。我没有包含所有的日历代码,因为我不认为这是问题所在。

eventMouseover: function(calEvent) { // start MouseOver 
      if (typeof calEvent.TeamDetailID != 'undefined'){ //start undefined 
      $(this).qtip({ 
       content: { 
        title: { text: calEvent.title }, 
        text: 'Loading...', 
        ajax: { 
         url: '/inc/_runcfc.cfm', 
         type: 'post', 
         data: {cfc:'Display' 
          , cfcMethod:'TeamDetail_popUpDetail' 
          , TeamDetailID: calEvent.TeamDetailID 
         }, 
         success: function(data, status) { 
          this.set('content.text', data); 
         } 
        } 
       }, 
       show: { delay: 0} 
      }); // (this).qtip 
      } //end if undefined 
     } // end mouseOver 

我认为,即使Ajax调用的尖端应为“加载......”的内容迅速流行,无论时间量,它需要的AJAX更换内容。上面的代码对所有其他鼠标悬停都“起作用”,但仍然很慢。我在做这件事的时候有什么不对吗?

+0

可能要设置'缓存:在qtip Ajax调用内TRUE',我不知道你是否能做到这一点或没有,但你仍然可以遗憾的是尝试 – Rafay

+0

没有。似乎没有任何区别,似乎并没有qtip传递缓存值,因为ajax在每一个其他鼠标悬停上运行。我可以确认,鼠标悬停事件在第一次日历事件第一次被隐藏时不会触发。不能为良好的用户体验做好准备 – Lance

回答

0

您描述的行为看起来与您的代码保持一致......您实际上是在第一个mouseover(eventMouseover处理程序)上配置qtip,然后这会导致qtip将其自己的事件处理程序绑定到鼠标悬停事件(因此为什么它在第二个鼠标悬停上工作)。

但是鉴于eventMouseover事件也再次呼吁,您正在重新初始化qtip ...

通常我会寻求建立工具提示一次,然后使用一个事件(假设他们在您使用的qtip版本中提供)来有条件地显示/隐藏工具提示。

+0

你是对的!我将eventMouseover更改为eventRender,并且它按预期工作。非常感谢你的帮助! – Lance

0

我使用qtip获得巨大成功;但我有它加载的事件呈现

eventRender: function(event, element, view) { 
    element.qtip({ //options }); 
}