2012-03-09 67 views
1

我有一個包裝。在包裝內我有一個內包裝。在內包裝內我有一個跨度。在那個跨度mouseenter上,我想要一個警報來顯示該跨度的中間和包裝的右邊界之間的距離(主要的:#wrapper)。我用position()嘗試了一些東西,但沒有達到我剛剛提到的內容。警報顯示元素之間的距離

http://jsfiddle.net/ZP7Lt/

我的HTML:

<div id="wrapper"> 
    <div id="inner-wrapper"> 
     <span id="me">It's me</span> 
    </div> 
</div>​ 

我的CSS:

#wrapper{ 
    width:400px; 
    height:300px; 
    margin-left:auto; 
    margin-right:auto; 
    margin-top:100px; 
    background-color:yellow;} 

#inner-wrapper{ 
    position:absolute;    
    width:100px; 
    margin-left:100px; 
    margin-top:50px; 
    background-color:blue;} 

#me{ 
    background-color:pink;} 

我的JS:

$('#me').mouseenter(function(){ 


    alert("distance from middle of span till right border of #wrapper???"); 

})​ 
+0

請不要在帖子中寫入標籤和/或簽名。 – 2012-03-10 16:25:42

回答

2
$('#me').mouseenter(function(){ 
    var $wrapper = $("#wrapper"), $this = $(this); 
    alert("distance from middle of span till right border of #wrapper is " + ($wrapper.width() - ($this.offset().left - $wrapper.offset().left + $this.width()/2))); 
})​; 

工作演示 - http://jsfiddle.net/ShankarSangoli/NxhWk/

+0

工作就像一個魅力!非常感謝你 :) – Marc 2012-03-09 15:41:04

-1

你可以使用一個combinatio的offset() n和width()

$('#me').mouseenter(function(){ 
    var middle = $(this).offset().left + $(this).width()/2; 
    var wrapperRight = $("#wrapper").offset().left+$("#wrapper").width(); 

    alert(wrapperRight - middle); 

})​ 

編輯: 修正了一個數學錯誤

Demo

+0

你好JJS。感謝您試圖提供幫助。根據結果​​,沒有結果是有問題的。顯示的距離大於主包裝寬度中的一個。無論如何Thnks ... – Marc 2012-03-09 15:40:22

+0

這個怎麼樣?代碼'$(this).parent('div')。outerWidth() - ($(this).position()。left + $(this).outerWidth()/ 2) – 2012-03-09 15:43:48

+0

對不起,馬克。錯誤是我的括號「$(this).offset()。left + $(this).width()」。不知道我在想什麼。 – wwv 2012-03-09 16:11:01

0

試試這個,我希望它能幫助

var spanLeft = $("#me").offset().left; 
var wrapper = $("#wrapper").offset().left;     
alert("distance from middle of span till right border of #wrapper???"); 
alert(spanLeft - wrapper);