2016-08-17 89 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屬性應該是你所需要的。相應地修改答案。 –