Как получить верхний / левый х / у карты изображений с помощью javascript / jquery? - PullRequest
1 голос
/ 02 апреля 2010

Используя jQuery's position () или offset (), я не вижу, чтобы получить координаты верхнего / левого угла области карты изображения. Он работает в FF, но больше ничего - нет webkit, IE, Opera.

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

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

Кто-нибудь знает другой способ доступа к ним? Обычно я бы просто взял координаты и разделить (","), но на этих страницах есть куча многогранных областей.

Ответы [ 2 ]

6 голосов
/ 03 апреля 2010

Если вы хотите получить верхнюю и левую координаты или блок, содержащий прямоугольник или многоугольник, попробуйте это

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

чтобы получить верхнюю левую координату круга, от которого зависит, хотите ли вы координаты блока, содержащего вихрь

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

или точка на окружности, которая является самой дальней верхней и левой

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 голосов
/ 02 апреля 2010
$('area').click(function() { 
var url = $(this).attr('href'); 
var coords = $(this).attr('coords').split(','); 

// Your code here 

// To prevent default action 
  return false; 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...