Поиск самого длинного элемента
Нужно найти самый широкий <li> в менюшке и получить его значение ширины.
Пишу так: $(function() { var ulwidth = $('.mainmenu ul li').map(function(indx, element){ return $(element).width(); var allwidth = ulwidth.get(); }); как найти максимальное значение среди всех перехваченых "ширин" <li> не знаю... помогите разобраться :help: |
var A = $('.mainmenu ul li'), max = 0, elem; A.each(function () { if (this.offsetWidth > max) max = this.offsetWidth, elem = this; }); В переменной elem будет самый широкий элемент. |
2Matre Странно, но похоже скрипт всегда выбирает только первый элемент <li> из меню, а не самый длинный.
|
Потому что они все одинаковой длины.
|
Нет, смотрите:
есть такой html <ul> <li><a href="/">Главная страница</a></li> <li><a href="/cont">Контакты</a></li> <li><a href="/faq">F.A.Q.</a></li> </ul> Все кнопки разной длинны... |
Ссылки разной длины, а li -- блочный элемент, он растягивается на всю ширину.
|
var A = $('.mainmenu ul li a'), max = 0, elem; A.each(function () { if (this.offsetWidth > max) max = this.offsetWidth, elem = this; }); Д/З: выучить основы HTML, CSS и желательно JS. |
Спасибо за наводку!
Видимо, я не до конца четко выразил суть проблемы. Вообще мне это нужно, что бы заставить в IE нормально отображать ширины колонок выпадающих списков меню (горизонтальное меню). Сейчас (без JS) приходится всем выпадающим спискам <ul>...</ul> задавать фиксированную ширину, а это не гуд т.к. могут быть длинные кнопки меню или наоборот очень короткие: визуально плохо. JS нужен не что бы ловить максимальную ширину какой-либо кнопки из какого-либо выпадающего списка и передавать эту ширину его родителю-контейнеру <ul>, дабы IE хавал и выстраивал выпадающие списки с нужной шириной для каждого. Вот такая проблема... Честно скажу, что нормальных решений в гугле не нашел, даже на других сайтах вижу, что все списки фиксированны по ширине, не нашел ни одного живого примера. :( |
сделал бы лучше через таблицу.
|
Такая хрень в IE случается, если внутри абсолютно позиционированного элемента что-то привязывается к правому краю (float: right; right: 5px; margin-left: auto; ...). Если избавиться от этого привязывания, то блок будет нормальной ширины.
|
Часовой пояс GMT +3, время: 18:36. |