【问题标题】:jQuery width() function returns wrong value in Internet Explorer 9jQuery width() 函数在 Internet Explorer 9 中返回错误值
【发布时间】:2012-04-27 13:53:45
【问题描述】:

我之前使用过 Easy Slider jQuery 插件,直到现在都没有遇到过问题。而且问题很奇怪。看看这个主页 http://bit.ly/HKiWY6

页面将弹出一个显示两个值的警报:

$("#slider").width()

$("#slider3").width()

我已经在 css 中设置了两者的值。一个是710px,一个是700px。

如果您在 IE9 中运行,它会显示 $(window).width() 的默认值,而不是两者的默认值,无论当前的窗口或文档宽度是多少。 FF 和 Chrome 正确返回。这是为什么呢?

【问题讨论】:

  • 能否也上传相关的脚本代码?

标签: javascript jquery html css internet-explorer


【解决方案1】:

尝试outerWidth,并确保将其包装在windows.ready事件侦听器中,以确保在计算宽度之前正确呈现所有DOM元素

$("#slider3").outerWidth()

【讨论】:

  • 谢谢。那行得通,但我最终修复了 Easy Slider 1.7 的 slider.js。并不是说我想弄乱核心代码,但看起来这是唯一的方法。我有点希望从我的 HTML/CSS 中修复它。因为这个示例 url 工作正常 cssglobe.com/lab/easyslider1.7/02.html
  • 好吧..我很困惑,所以它现在对你有用,但你仍然需要修改库,或者你是说 .width 计算是库的一部分?您是否尝试过将代码包装在 $(document).ready(function(){ } 中?
  • .width 是库的一部分。所以我猜这个库在 IE9 中存在某些 html/javascript 运行的错误。我试图弄清楚是否可以更改当前 html/js 模板中的内容...
【解决方案2】:

过去,当我在某个事件完全冒泡之前使用 jQuery 的 width()/height()/offset().top/.left 等时,我遇到过问题。看看setTimeout(function() { alert($('#slider').width()); }, 0); 有没有效果。这是一个便宜的 nextTick() 技巧,可能正是您所需要的。

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多