Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.03.2011, 13:58
Аспирант
Отправить личное сообщение для Randomizer Посмотреть профиль Найти все сообщения от Randomizer
 
Регистрация: 21.08.2010
Сообщений: 55

Поиск самого длинного элемента
Нужно найти самый широкий <li> в менюшке и получить его значение ширины.

Пишу так:

$(function() {

var ulwidth = $('.mainmenu ul li').map(function(indx, element){
return $(element).width();
var allwidth = ulwidth.get();

});


как найти максимальное значение среди всех перехваченых "ширин" <li> не знаю... помогите разобраться
Ответить с цитированием
  #2 (permalink)  
Старый 13.03.2011, 14:09
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

var A = $('.mainmenu ul li'), max = 0, elem;
A.each(function () {
	if (this.offsetWidth > max)
		max = this.offsetWidth, elem = this;
});


В переменной elem будет самый широкий элемент.
Ответить с цитированием
  #3 (permalink)  
Старый 13.03.2011, 16:05
Аспирант
Отправить личное сообщение для Randomizer Посмотреть профиль Найти все сообщения от Randomizer
 
Регистрация: 21.08.2010
Сообщений: 55

2Matre Странно, но похоже скрипт всегда выбирает только первый элемент <li> из меню, а не самый длинный.
Ответить с цитированием
  #4 (permalink)  
Старый 13.03.2011, 20:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Потому что они все одинаковой длины.
Ответить с цитированием
  #5 (permalink)  
Старый 14.03.2011, 11:56
Аспирант
Отправить личное сообщение для Randomizer Посмотреть профиль Найти все сообщения от Randomizer
 
Регистрация: 21.08.2010
Сообщений: 55

Нет, смотрите:
есть такой html
<ul>
<li><a href="/">Главная страница</a></li>
<li><a href="/cont">Контакты</a></li>
<li><a href="/faq">F.A.Q.</a></li>
</ul>


Все кнопки разной длинны...
Ответить с цитированием
  #6 (permalink)  
Старый 14.03.2011, 11:59
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ссылки разной длины, а li -- блочный элемент, он растягивается на всю ширину.
Ответить с цитированием
  #7 (permalink)  
Старый 14.03.2011, 12:34
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

var A = $('.mainmenu ul li a'), max = 0, elem;
A.each(function () {
	if (this.offsetWidth > max)
		max = this.offsetWidth, elem = this;
});


Д/З: выучить основы HTML, CSS и желательно JS.
Ответить с цитированием
  #8 (permalink)  
Старый 14.03.2011, 13:55
Аспирант
Отправить личное сообщение для Randomizer Посмотреть профиль Найти все сообщения от Randomizer
 
Регистрация: 21.08.2010
Сообщений: 55

Спасибо за наводку!
Видимо, я не до конца четко выразил суть проблемы. Вообще мне это нужно, что бы заставить в IE нормально отображать ширины колонок выпадающих списков меню (горизонтальное меню). Сейчас (без JS) приходится всем выпадающим спискам <ul>...</ul> задавать фиксированную ширину, а это не гуд т.к. могут быть длинные кнопки меню или наоборот очень короткие: визуально плохо.

JS нужен не что бы ловить максимальную ширину какой-либо кнопки из какого-либо выпадающего списка и передавать эту ширину его родителю-контейнеру <ul>, дабы IE хавал и выстраивал выпадающие списки с нужной шириной для каждого.

Вот такая проблема... Честно скажу, что нормальных решений в гугле не нашел, даже на других сайтах вижу, что все списки фиксированны по ширине, не нашел ни одного живого примера.

Ответить с цитированием
  #9 (permalink)  
Старый 14.03.2011, 14:13
Интересующийся
Отправить личное сообщение для jura4x01 Посмотреть профиль Найти все сообщения от jura4x01
 
Регистрация: 11.11.2010
Сообщений: 29

сделал бы лучше через таблицу.
Ответить с цитированием
  #10 (permalink)  
Старый 14.03.2011, 14:13
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Такая хрень в IE случается, если внутри абсолютно позиционированного элемента что-то привязывается к правому краю (float: right; right: 5px; margin-left: auto; ...). Если избавиться от этого привязывания, то блок будет нормальной ширины.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск элемента по критериям Wagner Events/DOM/Window 15 03.03.2010 15:14
Поиск элемента в IE !? Andrei Общие вопросы Javascript 3 20.11.2009 14:03
Поиск элемента по id coryphaeus Events/DOM/Window 16 17.11.2009 17:35
поиск элемента magavnuk Events/DOM/Window 10 14.07.2009 20:40
Поиск элемента по куску его Id gregOlsener Events/DOM/Window 1 25.08.2008 22:04