jQuery offset().top 浏览器不兼容?

标签 jquery

我试图将一个元素定位在其他元素的正下方,但我遇到了一个问题,当页面向下滚动时,offset() 会为 IE 和其他浏览器返回不同的值。

IE 返回相对于可见区域顶部的位置(即向下滚动时下降),而 Firefox 和 Chrome 始终返回相同的值,无论滚动如何(我认为这是更好的行为)。

只是澄清一下:令我困扰的是,如果没有一个元素的父元素是相对定位的,那么 offset() 和position() 将为 IE 返回不同的值,具体取决于您向下滚动的距离,但这永远不会jQuery 文档中提到。为什么会这样?有没有什么方法可以解决这个问题,不需要对 html 结构进行任何更改(例如,我想为许多字段重用一个日期选择器,只需稍微重新定位它)。

有人遇到同样的问题吗?

最佳答案

看看这个我的fiddle ,通过拖动红色div进行测试。

HTML

<div id="hook"></div>
<div id="hanger"></div>

CSS

#hook {
    width: 200px;
    height: 50px;
    background-color:red;
    position: absolute;
    cursor: move;
}
#hanger {
    width: 200px;
    height: 50px;
    background-color:purple;
    position: absolute;
}

Javascript

$('document').ready(function(){
    var top = $('#hook').offset().top + $('#hook').height()+20;
    var left = $('#hook').offset().left;

    $('#hanger').css('top', top);
    $('#hanger').css('left', left);

    $('#hook').draggable({
        start: function(){
            $('#hanger').toggle();
        },
        stop: function(){
                var top = $('#hook').offset().top + $('#hook').height()+20;
                var left = $('#hook').offset().left;

                $('#hanger').css('top', top);
                $('#hanger').css('left', left);

                $('#hanger').toggle();
        }
        });
});

关于jQuery offset().top 浏览器不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765626/

相关文章:

javascript - 制表符,有没有办法将页面总和添加到页脚?

jquery - 在 jQuery 中,如何执行 addClass 和淡出操作?

javascript - IE7 中“div_element”为 null 或不是对象

javascript - 单击 popover 触发元素时如何关闭/关闭 Bootstrap Popover?

javascript - jQuery Mobile slider 捕捉?

play 框架中的 Jquery 数据表 - $ ("#example").dataTable 不是函数

javascript - 将背景图像居中对齐

javascript - 如何使用 jQuery 制作日历(滑动日期作为轮播)?无格日。只有轮播日

php - jQuery $.get() 数组返回 [object Object]

jquery - jquery datepicker onselect 的问题