代码之家  ›  专栏  ›  技术社区  ›  Roman

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

  •  100
  • Roman  · 技术社区  · 14 年前

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

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

    我需要在点击时找到鼠标在搜索栏上的位置。我本以为上面的代码应该可以工作,但它给出了不正确的结果

    6 回复  |  直到 14 年前
        1
  •  241
  •   user372551 user372551    11 年前

    你想知道鼠标指针的位置吗 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>
    

    裁判 : http://api.jquery.com/position/

    <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>
    

    $(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));
        });
    });
    
        2
  •  17
  •   Hendry    9 年前
    $('#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);
    });
    
        3
  •  3
  •   Alice    11 年前

    试试这个:

    jQuery(document).ready(function(){
       $("#special").click(function(e){
          $('#status2').html(e.pageX +', '+ e.pageY);
       }); 
    })
    

    info 带演示

        4
  •  1
  •   l2aelba    8 年前

    百分比:

    $('.your-class').click(function (e){
        var $this = $(this); // or use $(e.target) in some cases;
        var offset = $this.offset();
        var width = $this.width();
        var height = $this.height();
        var posX = offset.left;
        var posY = offset.top;
        var x = e.pageX-posX;
            x = parseInt(x/width*100,10);
            x = x<0?0:x;
            x = x>100?100:x;
        var y = e.pageY-posY;
            y = parseInt(y/height*100,10);
            y = y<0?0:y;
            y = y>100?100:y;
        console.log(x+'% '+y+'%');
    });
    
        5
  •  1
  •   Memet Olsen    8 年前

    如果 MouseEvent.offsetX supported 通过您的浏览器(所有主流浏览器实际上都支持它),jQuery Event object 将包含此属性。

    MouseEvent.offsetX只读属性提供该事件与目标节点的填充边之间鼠标指针X坐标的偏移量。

    $("#seek-bar").click(function(event) {
      var x = event.offsetX
      alert(x);    
    });
    
        6
  •  0
  •   AirBlack    7 年前

    enter link description here

    html格式

    <body>
    <p>This is a paragraph.</p>
    <div id="myPosition">
    </div>
    </body>
    

    css格式

    #myPosition{
      background-color:red;
      height:200px;
      width:200px;
    }
    

    jquery查询

    $(document).ready(function(){
        $("#myPosition").click(function(e){
           var elm = $(this);
           var xPos = e.pageX - elm.offset().left;
           var yPos = e.pageY - elm.offset().top;
           alert("X position: " + xPos + ", Y position: " + yPos);
        });
    });