outerWidth() Возвращает другое значение, когда элемент скрыт

Я пытаюсь внести некоторые изменения в JQuery UI MultiSelect Widget.

Одна из проблем, с которыми я сталкиваюсь, заключается в том, что основной элемент управления становится слишком широким после обновления элемента управления. Глядя на код, ширина устанавливается с помощью:

var width = this.element.outerWidth();

куда this.element относится к моему оригиналу <select> элемент управления, который был скрыт виджетом MultiSelect пользовательского интерфейса jQuery.

Играя с этим, я вижу, что outerWidth() возвращает 424, когда мой <select> элемент скрыт, и он возвращает 406, когда он виден. (Обратите внимание, что width() также возвращает большее значение, когда элемент скрыт.)

Кто-нибудь знает, почему или как ширина будет меняться в зависимости от того, виден ли элемент управления? Значение, возвращаемое, когда элемент управления видим, кажется правильным значением.

РЕДАКТИРОВАТЬ:

Я создал jsFiddle, чтобы продемонстрировать это.

1 ответ

Решение

Вы не можете получить ширину display:none; элемент.

Вы должны скрыть это с Position:absolute; а также left:-999999px;,

Здесь CSS вам нужно. Не забудьте поставить position:relative на обёртке div.

JsFiddle: http://jsfiddle.net/7xqk01oa/3/

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