положение мыши jquery на холсте и живой элемент в DOM?

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

$('#colorPicker').click(function(e) {
var x = e.pageX - this.offsetLeft;
var y = e.pageY - this.offsetTop;
var canvas1 = colorPicker.getContext('2d');
var data = canvas1.getImageData(x, y, 1, 1).data;
var rgb = 'rgb(' + data[0] + ',' + data[1] + ',' + data[2] + ')';
$('a').css({color: rgb});
}).disableSelection();

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

Я попытался добавить живое событие к клику, но это ничего не изменило, как я могу получить правильные координаты для указателя на холсте, есть ли живой способ получить значения x и y ??


person nvcode    schedule 15.10.2011    source источник


Ответы (1)


Чтобы получить позицию щелчка относительно <canvas> (при условии, что #colorPicker является <canvas>):

var x = e.offsetX,
    y = e.offsetY;
person N Rohler    schedule 15.10.2011
comment
Мне нужна позиция, щелкнутая на холсте, начиная с верхнего левого угла холста, где верхний левый угол будет 0, 0. С этим скриптом все работает, но положение холста «живое». - person nvcode; 16.10.2011
comment
Я думаю, вам нужно опубликовать jsfiddle, чтобы мы могли увидеть пример соответствующего кода, с которым вы работаете. Скорее всего, вы слышите щелчок не по тому элементу. - person N Rohler; 16.10.2011
comment
Нет, я не так, как это работает, холст статичен! И я не могу играть с js, это лицензировано - person nvcode; 16.10.2011
comment
Вы обрабатываете щелчок, который открывает селектор, или щелчок на холсте? Возможно, вы слушаете не то событие. Пожалуйста, по крайней мере опубликуйте код, который оборачивает холст. - person N Rohler; 16.10.2011
comment
Все в порядке, я понял, что смещение jquery не работает со скрытыми элементами. - person nvcode; 16.10.2011
comment
Не для display: none, но да для visibility: hidden - person N Rohler; 16.10.2011