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

#jquery #canvas #mouse #live

#jquery #холст #мышь #ЖИВЫЕ КОНЦЕРТЫ

Вопрос:

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

 $('#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??

Ответ №1:

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

 var x = e.offsetX,
    y = e.offsetY;
  

Комментарии:

1. Мне нужна позиция, нажатая на холсте, начиная с верхнего левого края холста, где верхний левый будет равен 0, 0. С этим скриптом все работает, но положение холста «живое».

2. Я думаю, вам нужно опубликовать jsfiddle, чтобы мы могли увидеть пример соответствующего кода, с которым вы работаете. Скорее всего, вы ожидаете щелчка не по тому элементу.

3. Нет, я не так, как это работает, холст статичен! И я не могу использовать js fiddle, это лицензировано

4. Вы обрабатываете щелчок, который открывает селектор, или щелчок по холсту? Возможно, вы прослушиваете неправильное событие. Пожалуйста, хотя бы опубликуйте код, который обтекает холст.

5. Все в порядке, я понял, что смещение jquery не работает со скрытыми элементами.