jQuery 1.8.2 + не текущий jQuery UI = externalWidth и outerHeight не работают
Это повторение вопроса, который был закрыт по ошибке: jQuery 1.8 external Высота / Ширина не работает
Я попал в ту же проблему. outerWidth
а также outerHeight
и теперь возвращает объект jQuery вместо чисел.
Мы используем jQuery UI 1.8.17, выпущенный 10 января 2012 года. Это не супер старая версия, поэтому я чувствую, что другие люди увидят это. Мы заблокированы в этой версии из-за некоторых ужасных плагинов jQuery для пользовательского интерфейса, поэтому обновление в настоящее время не вариант.
Если я найду решение, я отвечу на этот вопрос.
Вот скрипка, демонстрирующая проблему 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
не определено, проверка для arguments.length
, цепочка должна быть ложной здесь. Вы можете передать undefined, и он все равно сделает аргументы объектом длиной 1. Кто-то должен прочитать их JS;)
3 ответа
Простое решение, кажется, просто проходит false
$(document.body).outerWidth(false);
Или true, если вы хотите получить поля, но если вы передали значение 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 UI. В 1.8.1 и 1.8.2, в частности, решаются проблемы, связанные с externalWidth / outerHeight, и, конечно, интерфейс jQuery должен быть синхронизирован.
Смотрите журналы изменений в объявлениях для справки: