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 должен быть синхронизирован.

Смотрите журналы изменений в объявлениях для справки:

http://blog.jquery.com/

http://blog.jqueryui.com/

Другие вопросы по тегам