Get accurate position for a click on a linked image using jquery
我正在开发一个应用程序,它允许通过点击直接在照片上标记(如Facebook、Flickr等)。但是,我似乎无法为单击照片注册正确的坐标。问题是X坐标似乎是浏览器窗口(而不是照片)中单击的绝对X距离,而Y坐标通常为负或非常小(顶部附近为负,底部附近为小)。这些是我单击左上角附近时得到的值(应该注册为0或0附近的值):"x"=>"219","y"=>"-311"…219在测量与浏览器窗口左侧的距离时似乎是右的,但该距离应在照片区域内)
我目前正在使用常规链接(链接包含其他相关照片数据)在照片上捕获单击事件和坐标,并在将其传递到我的Rails应用程序之前进行数学运算(jquery文档中使用的计算方法相同)。我怀疑这个方法与错误的值有很大的关系,尽管我怀疑数学或一些CSS的怪癖可能是错误的。不管是哪种情况,我都非常困惑。
JS:
1 2 | $(document).ready(function(){ clickTag(); |
(});
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function clickTag(){ $("#taggable").click(function(e){ var x = e.pageX - this.offsetLeft; var y = e.pageY - this.offsetTop; var url = $(this).attr("href"); courl = url + '&x=' + x + '&y=' + y; $.ajax({ type:"GET", url: courl, dataType:"script" }); return false; }); } |
CSS:
1 2 3 4 5 6 | ` <img alt="taggable_image" src="taggable_image.jpg" /> ` |
For your X and y try using this:
1 2 | var x = e.pageX - $(this).offset().left; var y = e.pageY - $(this).offset().top; |
让我知道这不管用
编辑:为了清晰-你直接从DOM元素上取下左上偏移。我建议你使用JQuery胶印功能是因为我更喜欢计算正确的跨浏览器位置。
第2版:请试着为图像指定点击事件作为链接的对话框。我有一个不寻常的疑虑,那条链接被报告为它的顶部胶片,作为元素的底部胶囊。
我的功能是
ZZU1
呼叫:
1 2 3 4 5 | $("#image").on('click', function(event){ var coords = getCoords(this, event); console.log('X: ', coords.x); console.log('Y: ', coords.y); }); |
注:Used Fast Float2int。