代码之家  ›  专栏  ›  技术社区  ›  Peter Di Cecco

jQuery offset()在某些浏览器和某些计算机上不起作用

  •  2
  • Peter Di Cecco  · 技术社区  · 16 年前

    在某些浏览器中定位元素时遇到问题。我用的是jQuery的自动完成功能 here $(textbox).offset();

    在解包代码以尝试修复我的问题后,我得到以下结果:

    var a = $(textbox).offset();
    element.css({
        width: typeof e.width == "string" || e.width > 0 ? e.width : $(textbox).width(),
        top: a.top + textbox.offsetHeight,
        left: a.left
    }).show();
    

    在不同的计算机上(都使用WindowsXP),它在IE8中工作。。。怎么会这样?我也在我的Mac OS 10.5上测试过。它可以在Firefox中使用,但不能在Safari中使用。

    我禁用了插件,更改了屏幕分辨率,重新调整了窗口大小。。。它只是有时在某些地方不一致地起作用。

    有人能想到我遗漏了什么吗?

    : 我重新编写了代码,以使用jquery1.4.2和jQuery提供的autocomplete jQuery UI 1.8立方厘米。它还是坏的,同样的问题。请帮帮我!

    看见 this related question . jqueryui自动完成中断,因为它使用偏移量。有人有工作吗?

    .css({ top: (offset.top + this.element.height) + 'px', left: offset.left + 'px' })
    

    如果更改为 top: '0px', left: '0px' 它工作得很好,但显然放错了位置。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Peter Di Cecco    16 年前

    我终于知道发生了什么。我有一个css规则来定义主体的宽度:

    body {
        width: 900px;
    }
    

    width: 100%; 把整个页面放在一个900px宽的div中,一切正常。

    offset() ,但在绝对定位项目时,在测量顶部和左侧距离时使用窗口边缘。

        2
  •  1
  •   Jed Schneider    11 年前

    我遇到了一个类似的问题,终于发现了答案 float 财产影响 relative ,使