获取当前单击的相对于图元的坐标
Getting currently clicked co-ordinates relative to an element
我有一个函数,可以在不使用JQuery的情况下获得最近单击的位置相对于div元素的坐标,JQuery运行良好。
没有jquery(工作):
var Board = document.getElementById("board"); // div element
function mouseListener(e)
{
var posX = e.clientX - Board.getBoundingClientRect().left,
posY = e.clientY - Board.getBoundingClientRect().top
console.log(posX+" : "+posY);
}
window.addEventListener("mousedown", mouseListener,false);
但与之前的代码相比,这个代码使用JQuery并给出不同的坐标
使用jquery(不工作):
var Board = $("#board");
function mouseListener(e)
{
var posX = e.clientX - Number(Board.css("left").replace("px", "")),
posY = e.clientY - Number(Board.css("top").replace("px", ""));
console.log(posX+" : "+posY);
}
$(window).mousedown(mouseListener);
如何在jQuery上正确地编写它,使其像第一段代码一样工作?
使用jQuery,您必须使用.offset()
才能获得与.getBoundingClientRect()
:相同的值
function mouseListener(e) {
var posX = e.clientX - parseFloat(Board.offset().left),
posY = e.clientY - parseFloat(Board.offset().top);
console.log(posX+" : "+posY);
}
jQuery.fn.offset()此处引用;
有三种方法可以附加事件处理程序。用于jQuery<1.7,但仍在较新版本中工作:
$(window).bind('mousedown', mouseListener);
由于使用了jQuery 1.7方法.on()
,它在事件委派方面也具有最大的灵活性:
$(window).on('mousedown', mouseListener);
第三个是您所使用的,它只是一个快捷方式,并在内部调用.on()
。
引用jQuery.fn.bind()--引用jQuery.fn.on()
您所做的一切在逻辑上都是绝对正确的,只是语法上的小错误。
var Board = $("#board");
function mouseListener(e)
{
var posX = e.clientX - Number(Board.css("left").replace("px", "")), //you forgot to put closing braces here and in the next line.
posY = e.clientY - Number(Board.css("top").replace("px", ""));
console.log(posX+" : "+posY);
}
$(window).mousedown(mouseListener);
请确保在id为"#board"的元素中使用了样式left和top,否则输出将为NaN:NaN。
相关文章:
- 我可以获得相对于被点击元素的确切点击位置吗
- JavaScript:单击时相对于父级增加变量值
- 打开相对于鼠标位置的CSS3/HTML5模式对话框
- 相对于角度控制器中的另一个阵列过滤阵列项目
- Javascript元素相对于屏幕的位置
- 块相对于父对象的位置
- 如果元素在容器外部,是否可以相对于容器以绝对定位来定位该元素
- 如何相对于浏览器窗口定位DIV
- 立即调用函数表达式(IIFE)相对于普通函数的优势
- 使用jquery获取相对于图片的点击坐标
- Javascript/Canvas-查找相对于坐标网格位置的鼠标坐标
- Raphaël转换相对于画布的拖动回调坐标
- 获取当前单击的相对于图元的坐标
- 获取元素相对于页面的坐标
- 添加可拖放元素后,使其相对于可拖放元素的坐标
- 如何在jQuery中获得鼠标点击相对于视口的光标坐标
- 如何查找元素相对于浏览器窗口的坐标
- 如何获得绝对坐标(相对于画布)后,在织物组缩放js
- 在Dojo/Javascript中获取相对于鼠标点击的x, y坐标
- 如何获得一个绝对定位的元素相对于另一个元素的放置坐标