javascript - 获取当前单击的相对于元素的坐标

标签 javascript jquery css html

我有一个函数可以在不使用工作正常的 JQuery 的情况下获取最近单击的位置相对于 div 元素的坐标。

没有 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() Reference here ;

可以通过三种方式附加事件处理程序。在 jQuery < 1.7 中使用,但仍可在较新版本中使用:

$(window).bind('mousedown', mouseListener);

从 jQuery 1.7 开始使用 .on() 方法,它对于事件委托(delegate)也具有最大的灵 active :

$(window).on('mousedown', mouseListener);

第三个是你用过的,它只是一个快捷方式,内部调用了.on()

Reference jQuery.fn.bind() - - - - Reference jQuery.fn.on()

关于javascript - 获取当前单击的相对于元素的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26658210/

相关文章:

html - 如何创建圆 Angular 矩形形状的 Css?

javascript - ReactJS:如何让这个图片轮播更流畅?

javascript - 冲突的 CSS 和 Javascript

javascript - 无法在 Nodejs Express 中将类作为函数调用

javascript - 使用 JavaScript 设置元素数据图标

php - 每天更换一个DIV之间的内容

jquery - Ajaxy - 添加参数到请求

javascript - "growing"时间轴的动画效果

javascript - 有没有在 Firefox 浏览器中检测 Windows-11 和 Windows-10 的方法?

javascript - Prop 类型失败 : Invalid prop 'value' of type 'object' supplied to 'TextInput'