2010-04-15 2 views
0

Возможно ли получить размер элемента после его изменения с помощью $ (el) .css()?Получить ширину элемента после изменения размера

Мой кода:

function resize() { 
    $(".combobox").css('width', '100%'); 
    var width = $(".combobox").width(); 
} 

Я получаю реальную стоимость выпадающего списка только после вызова функции во второй раз. Первый раз получает ширину перед выполнением $ (". Combobox"). Css ('width', '100%');

Я полагаю, что это ошибка DOM, которая не воссоздается после .css(). Есть ли способ принудительно перезагрузить DOM?

Заранее благодарен!

ответ

1

Попробуйте поставить часть кода, которая получает ширину в таймере, запланированного на 1 миллисекунду ...

Браузер не будет делать изменения размера вычисление во время выполнения скрипта. Если вы планируете таймер и выходите из функции JS, браузер обновит состояние всех измененных элементов DOM, а затем запустит таймер, поэтому к тому времени будет обновлена ​​ширина вашего combobox.

я использовал что-то очень похожее на основе GWT страницы

Этот трюк работает не только для JS, но во многих рамок GUI, которые делают макет в замедленной образом.

+0

Это действительно работало, мне пришлось использовать задержку в 500 милисекунд, чтобы заставить ее работать. Меньше этого не получилось. Благодаря! – infinito

+1

Я использовал: Функция resize() { $ (". Combobox"). Css ('width', '100%'); setTimeout (resize2, 500); } функция resize2() { var width = $ (". Combobox"). Width(); .... } – infinito

0

Try сцепления две функции:

function resize() { 
    var width = $(".combobox").css('width', '100%').width(); 
} 
+0

должно быть точно таким же. Таким образом, он работает для меня отлично. – jAndy

+0

Это не сработало для меня. – infinito