Ответ 1
Простое решение, похоже, просто проходит в false
$(document.body).outerWidth(false);
Или, true, если вы хотите поля, но если вы проходили в истинном порядке, похоже, что вы не столкнулись бы с этой ошибкой.
Это повторение вопроса, который был закрыт ошибочно: jQuery 1.8 external Высота/ширина не работает
Я делаю то же самое. outerWidth
и outerHeight
и теперь возвращает объект jQuery вместо чисел.
Мы используем jQuery UI 1.8.17, выпущенный 10 января 2012 года. Это не супер-старая версия, поэтому я чувствую, что другие люди увидят это. Мы заперты в этой версии из-за ужасных jQuery ui плагинов, поэтому обновление в настоящее время не является вариантом.
Если я найду решение, я отвечу на этот вопрос.
Здесь скрипка, демонстрирующая проблему http://jsfiddle.net/delvarworld/yxDHu/ (добавлена версия пользовательского интерфейса jQuery в "управлении ресурсами" )
Обновление: это потому, что эта строка в jQuery UI:
return orig[ "outer" + name ].call( this, size );
ошибочно вызывает это условие в jQuery 1.8.2:
var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
потому что хотя size
undefined, проверка выполняется для arguments.length
. chainable должен быть ложным здесь. Вы можете перейти в undefined, и он все равно сделает аргументы объектом с длиной 1. Кому-то нужно прочитать их JS;)
Простое решение, похоже, просто проходит в false
$(document.body).outerWidth(false);
Или, true, если вы хотите поля, но если вы проходили в истинном порядке, похоже, что вы не столкнулись бы с этой ошибкой.
Похоже, это проблема 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/
Я предлагаю обновить оба пакета jQuery и jQuery. 1.8.1 и 1.8.2, в частности, проблемы с адресами, связанные с внешней шириной/внешнейHeight, и, конечно, пользовательский интерфейс jQuery необходимо синхронизировать.
См. изменения в объявлениях для справки: