2010-02-11 5 views
5

У меня есть неопределенное количество встроенных элементов. Теперь, в зависимости от ширины браузера, некоторые элементы, конечно, будут перенесены в новую строку. Можно ли обнаружить и выделить эти ряды элементов, или же дом просто видит в нем одну большую линию?JS: Обнаружение обернутых встроенных элементов?

Спасибо за помощь!

EDIT: Пытается обнаружить обернутые элементы с помощью высоты смещения (спасибо Matchu). Обернутые элементы выдают одинаковые значения (общая высота элемента), как и те, которые были найдены в первой строке. Почему?

$('#content').children().each(function() { 
     alert($(this)[0].offsetHeight); 
    }); 

ответ

12

Вы можете проверить offsetHeight свойство элементов и наблюдать за его прыгать. Когда встроенный элемент имеет больше offsetHeight, чем предыдущий элемент, этот элемент находится в новой строке.

+0

Очень умный! Я просто попробовал, хотя это и не сработало. Я получаю те же значения во второй строке, что и в первом. Я добавил код jquery, который я использую, чтобы получить offsetheight в моем вопросе выше. – user239237

+0

Работает для меня: http://jsbin.com/awago3/edit. Поскольку вы используете jQuery, я тоже это сделал. – Matchu

+3

Я использовал .offset(). Вверху, как в вашем примере, и теперь это работает и для меня! Спасибо за помощь! – user239237

-2

Нет, это невозможно напрямую. Вы можете только попытаться измерить ширину каждого элемента, вычислить позицию и обработать те, которые не подходят.

1

Элемент element.getClientRects(), когда выполняется на встроенном встроенном элементе, возвращает массив с прямым объектом для каждой строки. Баузер поддерживает limited.

Смежные вопросы