Я не мог найти другие вопросы, задающие одно и то же, хотя это может быть проблемой с моей фразой поиска.Как найти ширину внутренних элементов
Я пытаюсь выяснить, как найти самую большую ширину всех элементов, содержащихся внутри контейнера div с фиксированной шириной. Таким образом, на изображении ниже черный ящик является контейнером div с фиксированной шириной. Красное поле представляет содержимое контейнера div, которое может быть изменено. Я хочу найти ширину красного ящика, используя только черный ящик в js.
Вот jsfiddle с тем, что я работаю на/попробовать:
текущие функции JQuery Я пытался, но безуспешно:
.width();
.innerWidth();
.outerWidth();
.scrollLeft();
Примечание: я не знаю НИКАКОГО о содержимом этого контейнера. Они могут быть любым элементом html или соединением элементов html, от divs до imgs до iframes. Я мог бы поставить «красный ящик» без фиксированной ширины. Переполнение черного ящика будет скрыто.
Обновление: в контейнере может быть любое количество детей. Пример: http://jsfiddle.net/w87k5/3/
Обновление 2: Я собираюсь запустить тесты скорости теста на всех ответах, чтобы узнать, какой из них самый быстрый, и выберите один из них после этого. Спасибо за все Ваши ответы!
Benchmarks: Я создал 1000 div со случайной шириной между 0 и 100, записал Date(). GetTime(), выполнил тест, а затем записал время снова. Вот результаты:
~ 2418 сред. миллисекунды с циклом for для длины. Возможно, я как-то испортил это?
for (var i = 1; i <= count; i++){
var q = $("#box :nth-child(" + i + ")").width();
if(q > box){
box = q;
}
}
~ 34.4 сред. ms для цикла .each.
~ 22.4 сред. ms для функции .map. (Выбранный ответ.)
Нравится? http://jsfiddle.net/JoshC/w87k5/2/ –
@JoshC, который вернет только первое дочернее значение, любой получатель jQuery, работающий над коллекцией, возвращает только первый – charlietfl
Aw, вы получили мои надежды (в то же время заставляя меня чувствовать себя немым). Чарлифл прав, я думаю, что это не сработает. –