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

时间:2012-10-03 23:01:02

标签: jquery version outerwidth

这是一个错误关闭的问题:jQuery 1.8 outer Height/Width not working

我遇到了同样的问题。 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;)

3 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:7)

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

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

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

答案 2 :(得分:2)

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

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

http://blog.jquery.com/

http://blog.jqueryui.com/