2010-04-02 11 views
1

使用jQuery的position()或offset(),我看不到圖像地圖區域的頂部/左側座標。它在FF中工作,但沒有其他 - 沒有webkit,IE,Opera。如何使用javascript/jquery獲取圖像地圖的上/左x/y?

$('area').bind("click",function(){ 
alert($(this).position().left); 
}); 

<area shape="rect" coords="14,25,205,150" href="#"> 

任何人都知道不同的方式來訪問這些?通常我會把coords和split(「,」)放在一起,但是在這些頁面上有一堆多面的區域。

回答

5

如果你想獲得頂部和左側的座標或包含矩形或多邊形塊,試試這個

var i, x = [], y = []; 
var c = $(this).attr('coords').split(','); 
for (i=0; i < c.length; i++){ 
x.push(c[i++]); 
y.push(c[i]); 
} 
var t = y.sort(num)[0]; 
var l = x.sort(num)[0]; 
alert('top = ' + t + ', left = ' + l); 
function num(a, b){ return (a-b); } 

獲得頂部,左側圓的座標這取決於是否你要包含cirlce

var c = $(this).attr('coords').split(','); 
var t = c[1] - c[2]; 
var l = c[0] - c[2]; 
alert('top = ' + t + ', left = ' + l); 

或圓上的點,既最遠的頂部和左側

塊的座標210
var c = $(this).attr('coords').split(','); 
var t = parseFloat(c[1]) - parseFloat(c[2]) * Math.cos(r); 
var l = parseFloat(c[0]) + parseFloat(c[2]) * Math.sin(r); 
alert('top = ' + t + ', left = ' + l); 
+0

太棒了,感謝您的幫助。只是爲了清楚起見,當你在第一位使用「num」時,我假設你正在引用一個函數來對數組進行數字排序?例如:function num(a,b){return(a-b); } – jpea 2010-04-07 16:06:51

+0

@jpea:啊,是的......我一定把這個功能遺漏了。 – Mottie 2010-04-07 16:24:45

-1
$('area').click(function() { 
var url = $(this).attr('href'); 
var coords = $(this).attr('coords').split(','); 

// Your code here 

// To prevent default action 
    return false; 
}); 
+0

但是,如何處理不是簡單矩形的座標? area shape =「rect」coords =「14,25,205,150,352,123,24,242,532」 – jpea 2010-04-02 15:55:06

相關問題