Я получаю некоторый html и вставляю его с .html()
, после чего я пытаюсь получить ширину одного из вновь вставленных элементов с .width()
(который имеет правило CSS). Однако иногда - ширина не поднимается и возвращается как 0.
Это потому, что JS запускает "впереди" вновь созданных элементов и их css? Я пробовал цепочку с .html('...').find('...').width()
, но она по-прежнему иногда не работает. Какая причина и есть ли работа?
Изменить: По популярному запросу, ПРИМЕР:
/* ajax.response is:
<div class="boxes">
<div class="box width-A">test 1</div>
<div class="box width-B">test 2</div>
<div class="box width-C">test 3</div>
</div> */
var boxOutput = $('.boxOutput'); /* .boxOutput is already on the page */
boxOutput.html(ajax.response);
// make width of ".boxes" equal to the sum of all ".box"
var boxWidth = 0;
$('.box', boxOutput).each(function(i) {
boxWidth += $(this).width(); /* this is where sometimes width returns 0 */
});
$('.boxes', boxOutput).css('width', boxWidth);
Мой исходный код слишком длинный/уродливый для копирования/вставки, но это упрощенная точная вещь, которую я делаю (извините, если там какая-то глупая ошибка, слишком поздно, когда я: P). Получив html обратно из ajax, поместив его в div, я хочу получить ширину каждого окна (потому что он может быть другим), а затем использовать эту ширину. Опять же, 90% времени, ширина возвращается правильно. Это те 10%, когда иногда ширина равна 0: (