我想使用jQuery获取图片上的点击事件的X/Y坐标。这些坐标应该是相对于图像本身而不是整个页面的。
我想使用jQuery获取图片上的点击事件的X/Y坐标。这些坐标应该是相对于图像本身而不是整个页面的。
您可以使用 pageX
和 pageY
获取鼠标在窗口中的位置。您还可以使用 jQuery 的 offset
获取元素的位置。
因此,对于距离图像左侧的距离应为pageX - offset.left
,距离图像顶部的距离应为pageY - offset.top
。
下面是一个示例:
$(document).ready(function() {
$('img').click(function(e) {
var offset = $(this).offset();
alert(e.pageX - offset.left);
alert(e.pageY - offset.top);
});
});
e.pageX
和e.pageY
。 - Josh注意!e.clientX
和e.clientY
与e.pageX
和e.pageY
之间有区别。
请尝试两者并确保使用正确的一个。 clientX
和clientY
会根据滚动位置而改变。
这是一个更好的脚本:
$('#mainimage').click(function(e)
{
var offset_t = $(this).offset().top - $(window).scrollTop();
var offset_l = $(this).offset().left - $(window).scrollLeft();
var left = Math.round( (e.clientX - offset_l) );
var top = Math.round( (e.clientY - offset_t) );
alert("Left: " + left + " Top: " + top);
});
$(function() {
$("#demo-box").click(function(e) {
var offset = $(this).offset();
var relativeX = (e.pageX - offset.left);
var relativeY = (e.pageY - offset.top);
alert("X: " + relativeX + " Y: " + relativeY);
});
});
参考:http://css-tricks.com/snippets/jquery/get-x-y-mouse-coordinates/
这个代码片段是一个jQuery函数,可以帮助你在鼠标移动时获取鼠标指针的X和Y坐标位置。这对于跟踪用户在页面上的交互非常有用,特别是当你需要知道他们点击了哪里或者他们正在指向哪些元素时。<img id='myImg' src='/my/img/link.gif' />
<script type="text/javascript">
$(document).bind('click', function () {
// Add a click-handler to the image.
$('#myImg').bind('click', function (ev) {
var $img = $(ev.target);
var offset = $img.offset();
var x = ev.clientX - offset.left;
var y = ev.clientY - offset.top;
alert('clicked at x: ' + x + ', y: ' + y);
});
});
</script>
$div.outerWidth(true) - $div.width()
和 $div.outerHeight(true) - $div.height()
来计算边距/边框等的数量。<img id='myImg' src='/my/img/link.gif' />
<script type="text/javascript">
$(document).bind('click', function () {
// Add a click-handler to the image.
$('#myImg').bind('click', function (ev) {
var $img = $(ev.target);
var offset = $img.offset(); // Offset from the corner of the page.
var xMargin = ($img.outerWidth() - $img.width()) / 2;
var yMargin = ($img.outerHeight() - $img.height()) / 2;
// Note that the above calculations assume your left margin is
// equal to your right margin, top to bottom, etc. and the same
// for borders.
var x = (ev.clientX + xMargin) - offset.left;
var y = (ev.clientY + yMargin) - offset.top;
alert('clicked at x: ' + x + ', y: ' + y);
});
});
</script>