Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript offset.top返回的值大于event.pageY_Javascript_Jquery_Events_Jquery Plugins - Fatal编程技术网

Javascript offset.top返回的值大于event.pageY

Javascript offset.top返回的值大于event.pageY,javascript,jquery,events,jquery-plugins,Javascript,Jquery,Events,Jquery Plugins,准确地说是50像素。我知道它在代码里的某个地方,但我想我已经盯着它看太久了 背景故事:我正在制作一个简单的jQuery插件,当鼠标悬停在图像上时,它将添加一个放大镜效果。它工作正常,然后我添加了一些代码,当从图像顶部进入时,它开始表现出奇怪的行为。我使用firebug查看图像的顶部偏移量和光标的pageY值之间是否存在差异,并且没有差异 在下面的链接中,您可以看到,从上面移入并没有及时激活 代码: update: function(event) { img.stop(); // To s

准确地说是50像素。我知道它在代码里的某个地方,但我想我已经盯着它看太久了

背景故事:我正在制作一个简单的jQuery插件,当鼠标悬停在图像上时,它将添加一个放大镜效果。它工作正常,然后我添加了一些代码,当从图像顶部进入时,它开始表现出奇怪的行为。我使用firebug查看图像的顶部偏移量和光标的pageY值之间是否存在差异,并且没有差异

在下面的链接中,您可以看到,从上面移入并没有及时激活

代码

update: function(event) {
    img.stop(); // To stop the image from constantly animating
    img.lens.stop(); // Same for the lens
    img.lens.leftmax = img.width + img.left;
    img.lens.topmax = img.height + img.top;

    img.lens.x = event.pageX - (vars.size / 2);
    img.lens.y = event.pageY - (vars.size / 2);

    img.lens.css({
        left: img.lens.x + 'px',
        top: img.lens.y + 'px'
    });

    console.log(img.top + ' : ' + event.pageY);

    if (event.pageX >= img.lens.leftmax || event.pageY >= img.lens.topmax || event.pageX <= img.left || event.pageY <= img.top) {

        img.lens.hide(); // Hide lens
        if (options.caption) {
            img.lens.caption.hide();
        } // Hide Caption
        if (options.overlay) {
            methods.nooverlay();
        }

        // API Callback Exit
        vars.onexit(img, img.lens);
    } else {
        // API Callback on entering
        vars.onenter(img, img.lens);

        if (options.overlay) {
            methods.overlay();
        }

        methods.doMath(event); // Recalculate pos
        img.lens.show(); // Show lens
        img.lens.css({
            backgroundPosition: img.lens.bgleft + 'px ' + img.lens.bgtop + 'px'
        }); // Assign coordinates
        if (options.caption) {
            img.lens.caption.show(); // Show caption
            img.lens.caption.x = img.lens.x + ((vars.size - img.lens.caption.outerWidth()) / 2); // Center caption
            img.lens.caption.css({
                left: img.lens.caption.x + 'px',
                top: img.lens.y + vars.size + 'px'
            }); // Assign coordinates
        }
    }
},

doMath: function(event) {
    img.wr = img.Owidth / img.width;
    img.hr = img.Oheight / img.height;

    img.lens.bgleft = String(((event.pageX - img.left) * img.wr - vars.size / 2) * (-1));
    img.lens.bgtop = String(((event.pageY - img.top) * img.hr - vars.size / 2) * (-1));
},​
更新:功能(事件){
img.stop();//停止图像不断设置动画
img.lens.stop();//镜头也一样
img.lens.leftmax=img.width+img.left;
img.lens.topmax=img.height+img.top;
img.lens.x=event.pageX-(变量大小/2);
img.lens.y=event.pageY-(变量大小/2);
img.lens.css({
左:img.lens.x+‘px’,
顶部:img.lens.y+‘px’
});
log(img.top+':'+event.pageY);
如果(event.pageX>=img.lens.leftmax | | | event.pageY>=img.lens.topmax | | event.pageX

它实际上不会返回50像素的差值

基本上,
img.top
是从
文档
到图像顶部的偏移量。
事件.pageY
是光标到
文档
顶部的偏移量,因为悬停事件是光标的精确点,而不是悬停对象的点


如果你愿意,你可以使用
event.target
并从中获取最高值。

谢谢!我明白你的意思,我会在代码中考虑到这一点。我刚刚更新了问题,发现这个浮动span标记导致了这个问题。你知道为什么会这样做吗?你用什么浏览器进行测试?因为我正在查看在Chrome/Win7中,它看起来很精确……Chrome/mac,但在FF和Safari中也是如此……我刚刚刷新了它,现在它似乎也正常工作。非常奇怪。没有什么可能在本地造成这种情况?
    <div class="header">
        <!-- This span tag -->
        <span class="note">&rarr; If you're using IE8 or lower, you will see a square lens</span>
        <h1>jQuery Images Lens Preview</h1>
        <span><i>The most customizable zoom tool there is.</i> <a href="#">GET IT NOW!</a></span>
        <div style="clear: both;"></div>
   </div>

    <div class="example">
        <div class="desc">
             <h3>Demonstration #1 - Basic Usage</h3>
             <pre>$('img.basic').superLens();</pre>
        </div>
        <div class="theimages">
            <img src="images/demo_img1.jpg" width="214" height="320" class="basic" />
            <img src="images/demo_img2.jpg" width="214" height="320" class="basic" />
        </div>
        <div style="clear: both;"></div>
    </div>