jQuery 1.8.2 +非当前jQuery UI = outerWidth和outerHeight坏了

这是一个错误关闭的问题: jQuery 1.8外部高度/宽度不起作用

我遇到了同样的问题。 outerWidthouterHeight现在返回jQuery对象而不是数字。

我们正在使用2012年1月10日发布的jQuery UI 1.8.17。它不是一个超级旧版本,所以我有一种感觉,其他人会看到这个。 由于一些可怕的jQuery ui插件,我们被锁定在这个版本中,因此升级目前不是一个选项。

如果我找到解决方案,我会回答这个问题。

这是一个演示问题的小提琴http://jsfiddle.net/delvarworld/yxDHu/ (在“管理资源”中添加了jQuery UI版本)

更新:这是因为jQuery UI中的这一行:

 return orig[ "outer" + name ].call( this, size ); 

在jQuery 1.8.2中错误地触发了这个条件:

 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), 

因为即使size未定义,也会检查arguments.length 。 可链接在这里应该是假的。 你可以传入undefined,它仍然会使参数成为长度为1的对象。有人需要阅读他们的JS;)

一个简单的解决方案似乎只是传递false

 $(document.body).outerWidth(false); 

或者,如果您想要边距,则为true,但如果您传入true,则看起来您不会遇到此错误。

看起来像是jqueryUI问题。 似乎在1.8.22中修复。

With jquery UI 1.8.21: http With jquery UI 1.8.21: //jsfiddle.net/yVq5H/13/

With jquery UI 1.8.22 (fixed): http With jquery UI 1.8.22 (fixed): //jsfiddle.net/yVq5H/14/

我建议升级你的jQuery和jQuery UI包。 1.8.1和1.8.2特别解决了与outerWidth / outerHeight相关的问题,当然jQuery UI需要保持同步。

请参阅公告中的更改日志以供参考:

http://blog.jquery.com/

http://blog.jqueryui.com/