Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.07.2012, 17:34
Аспирант
Отправить личное сообщение для adelante Посмотреть профиль Найти все сообщения от adelante
 
Регистрация: 26.01.2010
Сообщений: 44

.height() почему-то считает высоту элемента неправильно
На странице есть несколько контейнеров div.secondary_banner_box, внутри которых типовые элемнты: div.title, div.subtitle и div.text (ну и прочее, что нам неинтересно). Нужно, чтобы независимо от количества контента в любом из элементов div..secondary_banner_box все они начинались (и, следовательно, заканчивались) горизонтально на одном уровне соответственно класса элемента. Заумно как-то получилось...

В общем, чтобы все элементы одного класса были одинаковы по высоте. Есть функция, которая это делает (получает в данном примере ".secondary_banner_box", как первый параметр, а как второй -- один из классов внутренних элементов:

function alterHeights( container, element ) {
		
			var boxes = jQuery(container).length; //считаем сколько всего родительских контейнеров
			
			var heights = [];
			
			for ( var i = 0; i < boxes; i++ ){
			
				heights[i] = jQuery( '#box_' + (i+1) + ' ' + element ).height(); //определяем высоты всех элементов
			
			}
			
			var max = 0;
			
			for ( i = 0; i < boxes; i++) {
			
				if ( heights[i] > max ) max = heights[i]; //определеяем максимальную высоту среди всех элементов
			
			}
			
			for ( i = 0; i < boxes; i++ ) {
			
				jQuery( '#box_' + (i+1) + ' ' + element ).height(max); // выставялем эту максимальную высоту для всех элементов
			
			}
		
		}


Вроде всё ОК и часто отрабатывает эта конструкция как надо. Но часто и не нормально. Ненормальность заключается, в том, что "jQuery( '#box_' + (i+1) + ' ' + element ).height()" возвращает значение, большее, чем там реально должно быть.

Например, на этой странице, если функция не выполняется, то высота самого высокого элемента среди .title ( а именно #box_6 .title ) равняется 69px. Если же функция выполняется, максимальная высота становится 96px.

Скриншот без выполнения функции:



Скриншот с выполнением функции:



В чём причина такого странного поведения -- мне непонятно, поэтому прошу помощи.
Ответить с цитированием
  #2 (permalink)  
Старый 28.07.2012, 21:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,220

adelante,
padding добавляет высоту ширину элемента
попробуйте прописать padding:0!important;
Ответить с цитированием
  #3 (permalink)  
Старый 29.07.2012, 16:09
Аспирант
Отправить личное сообщение для adelante Посмотреть профиль Найти все сообщения от adelante
 
Регистрация: 26.01.2010
Сообщений: 44

Увы, не помогло
Ответить с цитированием
  #4 (permalink)  
Старый 29.07.2012, 16:13
Аспирант
Отправить личное сообщение для adelante Посмотреть профиль Найти все сообщения от adelante
 
Регистрация: 26.01.2010
Сообщений: 44

Совершенно не понятно, в чём причина такого поведения. Сейчас я прошёл по всем 6 контейнерам и в одном из элементом каждого контейнера (.subtitle) повыключал выставленный "height:72px;", -- ни в одном из этих элементов нет такой высоты 0_о
Ответить с цитированием
  #5 (permalink)  
Старый 29.07.2012, 17:23
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,220

adelante,
Лучше чтоб не гадать - ссылку на тестовую страницу и скриншот - с обведенной рамкой и селектором -высоту чего глянуть
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2012, 19:45
Аспирант
Отправить личное сообщение для adelante Посмотреть профиль Найти все сообщения от adelante
 
Регистрация: 26.01.2010
Сообщений: 44

На скриншотах прикреплённых выбран для анализа элемент "#box_6 .title".

Это заголовок правого тура во втором ряду. На скриншотах серым выделено слово "исследуем" (1й скриншот) и буква "и" (2й скриншот).
Ответить с цитированием
  #7 (permalink)  
Старый 29.07.2012, 20:35
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,220

adelante,
Онлайн - Лечение зубов по фотографии - с гарантией - дорого!
Ответить с цитированием
  #8 (permalink)  
Старый 31.07.2012, 20:08
Аспирант
Отправить личное сообщение для adelante Посмотреть профиль Найти все сообщения от adelante
 
Регистрация: 26.01.2010
Сообщений: 44

http://questtravel.ru/?s=африка

Ответить с цитированием
  #9 (permalink)  
Старый 31.07.2012, 20:17
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,220

adelante,
В Опере - так =>
Мозилла и Хром



Последний раз редактировалось Deff, 31.07.2012 в 20:25.
Ответить с цитированием
  #10 (permalink)  
Старый 01.08.2012, 09:16
Интересующийся
Отправить личное сообщение для imsha Посмотреть профиль Найти все сообщения от imsha
 
Регистрация: 19.11.2008
Сообщений: 28

Попробуй так:

//Скрипт отработатет после загрузки картинок
$('.secondary_banner_box img').load(function(){
    var height = 0;
    $('.secondary_banner_box').each(function(){
        var h = $(this).height();
        if (h > height) {
            height = h;
        }
    });
    $('.secondary_banner_box').height(height);
    //Или так
    //$('.secondary_banner_box').css('min-height', height);
});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему калькулятор не считает? Filja Общие вопросы Javascript 10 25.03.2015 10:40
Изменить высоту одного элемента вычтя ее из другого newcoder jQuery 4 09.02.2015 00:06
Можно ли средствами JS узнать высоту скрытого элемента? ацкий Общие вопросы Javascript 7 24.08.2011 19:07
Браузер не успевает определить высоту вновь созданного через XMLHttpRequest элемента Lockpickup AJAX и COMET 17 25.04.2011 17:58
Почему нет движения элемента? DZHETIGAPA Элементы интерфейса 14 20.04.2011 11:15