2016-08-17 84 views
0

如何捕获正确的点击位置?jQuery - 在jqueryUI对话框中获取点击位置

我有一个自制的上下文菜单,我想提高点击位置。 单击位于jQueryUI.dialog()对象中的DOM元素上。 当我尝试,我给了我错误的(为我的使用)坐标。

的Javascript:

$("a").on("contextmenu", function(eve){ 
    $("#contextmenu").show().css({ 
    left: eve.pageX, 
    top: eve.pageY 
    }); 
}); 


<div class="im-the-dialog"> 
    <div class="60% width">some content</div> 
    <div> 
     <ul> 
      <li> 
       <a class="clicked">click</a> 
      </li> 
     </ul> 
    </div> 
    <div class="the context menu">some links</div> 
</div> 

我怎样才能解决这个问题?

+0

相关:http://stackoverflow.com/questions/6073505/what-is-the-difference-between-screenx-y-clientx-y-and-pagex-y – trysmudford

回答

1

这是你如何让点击事件右边cordinates

$(document).ready(function() { 
    $('img').click(function(e) { 
    var offset = $(this).offset(); 
    alert(e.pageX - offset.left); //x cordinate 
    alert(e.pageY - offset.top); //y cordinate 
    }); 
}); 

检查这jsfiddle为您的代码

+0

谢谢,但同样的问题 - 它是定位在错误的地方。 – yossi

+0

我可以有任何的html代码吗?或jsfiddle –

+0

检查此https://jsfiddle.net/sxLrfzha/它显示exaclty鼠标坐标点击元素 –

0

您应该能够无需任何计算都利用了事件的性质。

假设对话框是绝对定位的,offsetX和offsetY属性应该是您所需要的。

event.clientX和event.clientY是您正在查找的坐标,如果上下文菜单完全位于主体或静态定位的容器内。更多here。客户端X和客户端Y的属性至少在ie8的支持。

+0

问题是,contextmenu是在对话框(并不能出去)..所以它必须是相对于它的位置。 – yossi

+0

然后offsetX和offsetY属性应该是你所需要的。相应地修改答案。 –

相关问题