2011-02-14 67 views
5

jQuery的移動支持這些事件:如何通過jquery-mobile獲取點擊事件的位置/座標?

http://jquerymobile.com/demos/1.0a3/docs/api/events.html

我怎麼敲打事件(例如圖像內)的位置在移動設備上?

$('#myimg').bind('tap', function(e){ 
    var x = ???; 
    var y = ???; 

    alert([x, y]); 
}) 
+0

不知道,但它的e.pageX,e.pageY基於web基礎jquery – Val 2011-02-14 13:12:57

+0

我知道,這就是爲什麼我問,它不工作;-)我也檢查了jquery移動源,但還沒有發現它是如何應該工作。我無法想象事件中不會提供座標。 – Erik 2011-02-14 13:22:33

回答

0

我不知道關於jQuery Mobile的,但我只是想在畫布演示頁我在我的iphone ...你只要按一下,並繪製圓和它工作正常。

,我只是使用e.pageX和e.pageY喜歡的人上面說

function getCursorPosition(e) { 
    var x; 
    var y; 
    if (e.pageX != undefined && e.pageY != undefined) { 
    x = e.pageX; 
    y = e.pageY; 
    } 
    else { 
    x = e.clientX + document.body.scrollLeft + 
      document.documentElement.scrollLeft; 
    y = e.clientY + document.body.scrollTop + 
      document.documentElement.scrollTop; 
    } 
    x -= Ccanvas.offsetLeft; 
    y -= Ccanvas.offsetTop; 

    var Point = { 
     x: x, 
     y: y 
     }; 
    return Point; 
} 
3

爲什麼你不會得到pageX屬性& pageY的原因是,你不包含任何touchcancel事件座標信息(畢竟它是非觸摸的)。這不是一個真正的點擊或點擊,而是一個觸摸事件,沒有移動(超過閾值)並且足夠快。

我使用的jQuery的touchswipe插件時遇到同樣的事情,必須通過存儲在touchstart事件的協調和檢索它的取消一個能夠提取座標來解決它。

你會想這些的啓動事件保存(在jQuery Mobile的「vmousedown」):

event.touches[0].pageX 
    event.touches[0].pageY 

此外,在移動設備上,你應該window.devicePixelRatio乘以座標,以獲得準確的在屏幕上的位置。

相關問題