代码之家  ›  专栏  ›  技术社区  ›  Basic

用于image onclick()的jquery x/y命令

  •  1
  • Basic  · 技术社区  · 16 年前

    我想知道是否有人能帮助我。我很了解JS,但对JQuery完全陌生……

    我有一个图像正在通过调用updateimage()动态加载

        $.fn.image = function (src, f) {
            return this.each(function () {
                var i = new Image();
                i.src = src;
                i.onload = f;
                this.appendChild(i);
            });
        }
    
        function UpdateImage() {
            $("#Screen").image("./AJAX/UI/GetImage.aspx", function () {
                //alert('ok');
            });
        }
    

    加载图像后,我希望用户能够单击它上面的任何地方,并在Ajax调用中使用单击的X/Y坐标。

    我知道如何在纯JS中实现这一点,但我觉得必须有一个更优雅的jquery方法…

    目前,我正在尝试:

        $(document).ready(function () {
            $("#Screen").click(function () {
                alert(this.x + ', ' + this.y);
            });
            UpdateImage();
        });
    

    不幸的是,无论单击位置如何,检索到的x和y都是常量。(X:9,Y:1019)。

    问题: 由于图像几乎在页面的左上角,我对Y值感到惊讶-它代表什么?我假设,如果不是鼠标命令,它将是元素位置-但这似乎不正确-Y在“向上”方向是正的,而不是向下的(如我所预期的)?

    我在谷歌上搜索并找到了很多我认为是多余的解决方案——它们适用于任何元素类型,依赖于计算元素位置,然后鼠标光标位置,并进行一些数学运算——这看起来非常糟糕,而且容易出错,因为它依赖于浏览器。

    问题: 我采取的方法正确吗?我应该使用jquery ui小部件来显示图像吗?为了争论,假设图像是一个屏幕截图,可能比浏览器窗口大-我目前依靠浏览器进行滚动等。但再次怀疑可能有更好的方法吗?

    简而言之,任何来自jquery专家的建议都会非常感谢——特别是如果你能给我指出一个好的jquery资源(我已经找到了手册,但这对于方法签名比在使用jquery时找出正确的方法更有用)。

    如果它影响您的响应,我用来存储图像的元素如下所示

    <div id="Image"><img id="Screen"/></div>
    

    非常感谢您提供的任何帮助。

    1 回复  |  直到 16 年前
        1
  •  2
  •   prodigitalson    16 年前

    是否尝试使用附加到单击事件而不是元素的坐标:

    $(document).ready(function () {
            $("#Screen").click(function (e) {
                alert(e.pageX + ', ' + e.pageY);
            });
            UpdateImage();
        });