使用jQuery如何获取目标元素上的点击坐标

Rom*_*man 105 html javascript css jquery jquery-ui

我的html元素有以下事件处理程序

jQuery("#seek-bar").click(function(e){
    var x = e.pageX - e.target.offsetLeft;
    alert(x);    
});
Run Code Online (Sandbox Code Playgroud)

我需要在点击时找到#seek-bar上鼠标的位置.我原以为上面的代码应该可以工作,但是结果不正确

小智 224

您是否试图relative将鼠标指针的位置简单地指向元素(或)鼠标指针位置

尝试此演示:http://jsfiddle.net/AMsK9/


编辑:

1)event.pageX,event.pageY给你鼠标位置相关文件!

参考:http://api.jquery.com/event.pageX/
http://api.jquery.com/event.pageY/

2)offset():它给出了元素的偏移位置

参考:http: //api.jquery.com/offset/

3)position():它给你一个元素的相对位置,即

考虑将元素嵌入到另一个元素中

例如:

<div id="imParent">
   <div id="imchild" />
</div>
Run Code Online (Sandbox Code Playgroud)

参考:http://api.jquery.com/position/

HTML

<body>
   <div id="A" style="left:100px;"> Default    <br /> mouse<br/>position </div>
   <div id="B" style="left:300px;"> offset()   <br /> mouse<br/>position </div>
   <div id="C" style="left:500px;"> position() <br /> mouse<br/>position </div>
</body>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

$(document).ready(function (e) {

    $('#A').click(function (e) { //Default mouse Position 
        alert(e.pageX + ' , ' + e.pageY);
    });

    $('#B').click(function (e) { //Offset mouse Position
        var posX = $(this).offset().left,
            posY = $(this).offset().top;
        alert((e.pageX - posX) + ' , ' + (e.pageY - posY));
    });

    $('#C').click(function (e) { //Relative ( to its parent) mouse position 
        var posX = $(this).position().left,
            posY = $(this).position().top;
        alert((e.pageX - posX) + ' , ' + (e.pageY - posY));
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 示例为+1 ...虽然我也在这里添加代码,但是如果你的链接死了这个问题将来会变得无用,我会为每个代码添加代码并在此处进行简要介绍:) (8认同)
  • 有一种更简单的方法来处理''#B'`:`e.offsetX`和`e.offsetY`.我想你想编辑它.我已经更新了小提琴[这里](http://jsfiddle.net/AMsK9/101/).感谢帖子,我找到了这个解决方案,谢谢. (2认同)

Nis*_*sar 14

$('#something').click(function (e){
    var elm = $(this);
    var xPos = e.pageX - elm.offset().left;
    var yPos = e.pageY - elm.offset().top;

    console.log(xPos, yPos);
});
Run Code Online (Sandbox Code Playgroud)