簡體   English   中英

如何確定JavaScript元素中的點擊位置?

[英]How to determine the clicked position within an element in JavaScript?

JavaScript中是否有任何方法可以確定元素內的單擊位置或與左,右或中心的距離? 我無法確定點擊區域的位置(左,中或右)。

在此處輸入圖片說明

我有下表-

<tr id="ing-117">
    <td style="width: 15%; vertical-align: middle; display: none;"><img src="arrow-left.png" class="arrow left hidden"></td>
    <td style="width: 70%; text-align: left;" class="txt center lefted"><div class="in"></div>2 cups ice</td>
    <td style="width: 15%; vertical-align: middle;"><img src="arrow-right.png" class="arrow right hidden"></td>
</tr>

這是我的js代碼-

 $('.arrow').unbind('click')
        .bind('click', function(event, is_triggered){
            var th = $(this);
            var x = event.clientX;
            var y = event.clientY;
            console.log(x , y);

但是當我單擊第二個<td>它將在控制台中打印undefined undefined

請幫忙,謝謝。

您可以從傳遞給點擊處理程序的click事件中檢索offsetXoffsetY屬性。 嘗試這個:

 $('div').click(function(e) { var clickX = e.offsetX; var clickY = e.offsetY; $('span').text(clickX + ', ' + clickY); }); 
 div { width: 150px; height: 25px; border: 1px solid #000; background-color: #EEF; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div></div> <span></span> 


更新資料

問題中經過編輯的代碼應該可以正常工作(即使您應該使用off()on()而不是unbind()bind() )。 您是否檢查過控制台中的錯誤?

  $('.arrow').off('click').on('click', function(e) { var th = $(this); var x = e.clientX; var y = e.clientY; console.log(x, y); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr id="ing-117"> <td style="width: 15%; vertical-align: middle; display: none;"> <img src="arrow-left.png" class="arrow left hidden"> </td> <td style="width: 70%; text-align: left;" class="txt center lefted"> <div class="in"></div> 2 cups ice </td> <td style="width: 15%; vertical-align: middle;"> <img src="arrow-right.png" class="arrow right hidden"> </td> </tr> </table> 

使用任何鼠標事件(mousemove,mouseup,mousedown),並將事件參數傳遞給函數。 在函數內部,您可以訪問clientX和clientY屬性以獲取坐標。

一個例子:

<div onmousemove="showCoords(event)"></div>

function showCoords(event) {
    var x = event.clientX;
    var y = event.clientY;
    var coor = "X coords: " + x + ", Y coords: " + y;
}

您可以通過偏移td的位置並單擊窗口中的位置來完成

$(document).on('click','td_selector',function(){
     alert(e.pageX-$(this).offset().left)+"::"+ (e.pageY-$(this).offset().top));
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM