2009-02-10 6 views
4

Lorsque vous passez la souris sur une période, je voudrais obtenir les valeurs offsetLeft et offsetTop pour que je puisse faire flotter quelque chose à proximité. Quand je fais cela, je reçois 0 pour les deux valeurs.JavaScript/jQuery - offsetLeft et offsetTop

Quelle est la meilleure façon d'y remédier? J'utilise jQuery.

On suppose que je commence avec (en boucle par script côté serveur):

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

Final Thoughts:
je donne le le représentant de réponse sur la base de "l'effet de levier de code"/DRY. La fonction la plus longue que vous pourriez utiliser encore et encore dans votre propre bibliothèque js. La deuxième réponse courte est cependant 100% correcte aussi.

Répondre

13

Je pense que vous devriez être en mesure de le faire:

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

cette poignée ne l'ensemble "cumulatif" chose compenser? – BuddyJoe

+1

+1 pour la créativité. – BuddyJoe

+0

@Bruno - Je pense qu'il devrait. Il obtient le décalage par rapport au document. – nickohrn

28

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

+5

Attention, $ (this) .offset(). Left n'est pas équivalent à this.offsetLeft (même chose pour le haut). http://jsfiddle.net/gnNLD/5/ – mmitchell

+0

Est-ce que la chose offset() fonctionne sur le chrome ..? –

-1

Pourquoi avez-vous besoin de scripts côté serveur?

essayez ceci:

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}); 
    }; 
+1

Donc, vous n'utilisez jamais le côté serveur? PHP même? Pouvez-vous expliquer votre code? semble un peu gonflé. – BuddyJoe

+0

c'est juste une partie du code. Ici, vous positionnez le survol via javaScript et vous le positionnez via l'événement événement mousemove. pageX et event.pageY. – adardesign