2012-02-29 83 views
0

我正在使用Adam Shaw的FullCalendar v1.5.3。我已經得到了幾乎所有的東西,可以接受我正在嘗試做一個「簡單的」hovertip,並且不能完全得到我要找的東西。FullCalendar:在鼠標懸停時,我如何判斷事件懸停的左上角?

我想讓我的工具提示的左側與我懸停的事件的左側相同。我試圖讓工具提示懸停在事件之上。

我目前使用的代碼似乎給我一個「隨機」左和頂部鼠標進入FullCalendar事件的地方。

我當前的代碼看起來像:

eventMouseover: function (event, jsEvent, view) { 
      var eventInfo = $("#EventInfoTip"); 
      var mousex = jsEvent.pageX + 20; //Get X coodrinates 
      var mousey = jsEvent.pageY + 20; //Get Y coordinates 
      var tipWidth = eventInfo.width(); //Find width of tooltip 
      var tipHeight = eventInfo.height(); //Find height of tooltip 

      //Distance of element from the right edge of viewport 
      var tipVisX = $(window).width() - (mousex + tipWidth); 
      //Distance of element from the bottom of viewport 
      var tipVisY = $(window).height() - (mousey + tipHeight); 

      if (tipVisX < 20) { //If tooltip exceeds the X coordinate of viewport 
       mousex = jsEvent.pageX - tipWidth - 20; 
      } if (tipVisY < 20) { //If tooltip exceeds the Y coordinate of viewport 
       mousey = jsEvent.pageY - tipHeight - 20; 
      } 
      //Absolute position the tooltip according to mouse position 
      eventInfo.css({ top: mousey, left: mousex }); 
      eventInfo.show(); //Show tool tip 
     } //end full calendar mouseover event 

EventInfoTip是頁面上的簡單跨度:

<span id = "EventInfoTip"> 
I'm over an event 
</span> 

是否有可能獲得頂部和左側,我徘徊在當前事件過度?

+0

不知道這是否會幫助,因此爲註釋:http://api.jquery.com/offset/ – mindandmedia 2012-02-29 22:36:34

回答

3

來自文檔:「在回調函數中,this設置爲事件的div」元素。

因此,您可以使用$(this).offset()來獲取頁面中的事件div位置。

var elOffset= $(this).offset(), offsetLeft=elOffset.left, offsetTop=elOffset.top 
+0

偏移就是我要找的。我上面的代碼現在有點不合適,但這讓我走上了正確的道路。 – 2012-03-01 16:19:56

+0

如果您使用的是'angularjs'或除jQuery之外的任何其他js框架,則this關鍵字將引用'window'而不是'div'元素,在這種情況下(如果您願意編輯插件),只需將'this'關鍵字分配給'eventMouseover'觸發器的另一個'param' – 2014-07-14 08:34:38

+0

@MuhiaNJoroge您的評論沒有意義。 'this'的上下文在這裏明確定義 – charlietfl 2014-07-14 11:47:21