【问题标题】:Determining where a user clicks an image确定用户单击图像的位置
【发布时间】:2011-07-12 20:35:49
【问题描述】:

我正在使用 Javascript/jQuery 和 CSS 让俄克拉荷马州地图的“背景”图像填满屏幕。这个想法是,用户将点击地图的几个不同“区域”中的某个区域,然后根据他们点击的区域触发一个事件。

我的问题是我需要确定用户点击的位置。我玩过使用像素,但像素不可靠,因为尺寸会随屏幕尺寸而变化。我曾考虑将背景图像切割成单独的图像,并让它们各自成为自己的容器,但这似乎不必要地复杂。

那么,我有没有办法确定用户在屏幕上点击的位置?我可能会提供一些我制作并尝试过的代码;现在一切都是零碎的,因为我还在尝试不同的东西!

这是我之前尝试过的一件事:

$(document).ready(function()
{
    $("#container").click(function(e)
    {
        var x = ("#container").pageX;
        var y = ("#container").pageY;
        if(x >= ? && x <= ? && y >= ? && y <= ?) 
        {
            alert('You clicked the panhandel!');
        }
   }); 
});

我将 if 语句要求中的 xy 值设置为像素值,这些像素值“装箱”了我希望弹出警报的区域,但什么也没发生。

编辑 感谢您的帮助和时间,非常感谢!我感到困惑的最后一件事是if() 中应该包含什么。由于元素将是屏幕的大小,我不认为我真的需要偏移,但是

 if(x &gt;= 200 &amp;&amp; x &lt;= 300 &amp;&amp; y &gt;= 200 &amp;&amp; y &lt;= 300) 
对于不同尺寸的屏幕将不准确;

也就是说,对于另一个尺寸的屏幕,我找到的图像部分大小的“坐标”可能会有所不同,那么我应该如何处理xy

我不知道如何体面地解释这一点,如果最后一部分无法回答,我会理解并继续寻找!

【问题讨论】:

  • 为什么不直接使用图像映射?

标签: jquery jquery-ui positioning jquery-events mouseclick-event


【解决方案1】:

http://api.jquery.com/event.pageX/http://api.jquery.com/event.pageY/

$(element).click(function(event) {
    var x = event.pageX,
        y = event.pageY;
});

【讨论】:

  • 如果你想要同样的东西,但在一个特定的元素内:x = e.pageX - this.offsetLeft
  • 这是我尝试的第一件事。问题是当我尝试使用 x 和 y 时什么也没发生。
  • 你正在做$('#container').pageX,你必须使用事件 e.pageX
  • 啊,是的,这行得通。我会更多地研究 this.offsetLeft;这应该涵盖屏幕尺寸差异?
  • e.pageX - this.offsetLeft 为您提供元素内的坐标(this.offsetLeft 是您的元素在页面中的位置:))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多