2009-02-10 70 views
4

當將鼠標懸停在一個跨度上時,我想獲得offsetLeft和offsetTop值,這樣我就可以將東西懸停在它的附近。當我這樣做,我得到兩個值爲0。JavaScript/jQuery - offsetLeft和offsetTop

什麼是解決此問題的更好方法?我正在使用jQuery。

假設我開始與(由服務器端腳本循環):

<span onmouseover="hoverNearMe(this.offsetLeft,this.offsetTop);">some username</span><br /> 

最後的思考:
我給的答案代表了基於「代碼利用」 /幹。 您可以在自己的js庫中反覆使用更長的功能。 但第二個簡短答案也是100%正確的。

回答

13

我想你應該能夠做到這一點:

HTML

<span class="get-close-to">some username</span><br /> 

jQuery的

jQuery('.get-close-to').hover(function() { 
    var offset = jQuery(this).css('offset'); 
    alert('Left: ' + offset.left + '\nTop: ' + offset.top); 
}); 
+0

這是否處理整個 「累積」 偏移的事情嗎? – BuddyJoe 2009-02-10 22:35:42

+1

+1創造力。 – BuddyJoe 2009-02-10 22:41:59

+0

@布魯諾 - 我認爲應該。它獲得相對於文檔的偏移量。 – nickohrn 2009-02-10 23:10:54

28

$(this).offset().left$(this).offset().top

-1

爲什麼你需要服務器端腳本?

試試這個:

var positionImg = function(e) { 
     $(this).offset(); 
    var zoomCntnrPos = $(this).offset.top; 
     if (zoomCntnrPos >= maxBottomVPos) 
     { 
      tPosX = e.pageX; 
      tPosY = e.pageY +20; 
      } 
     else if (zoomCntnrPos <= maxTopVPos){ 
      tPosX = e.pageX; 
      tPosY = e.pageY +40; 
      } 
     else 
      { 
      tPosX = e.pageX; 
      tPosY = e.pageY -100; 
      } 
     $zoomContainer.css({top: tPosY, left: tPosX}); 
    }; 
相關問題