Одинаковая высота колонок

12 3
R
На сайте с 01.10.2013
Offline
87
1786

Собственно всегда использую скрипт JS

$(document).ready(function() {   //$(document).ready(function() {    //$(function(){


//equal heights

$(document).ready(function() {
function setEqualHeight(columns)
{
var tallestcolumn = 0;
columns.each(
function()
{
currentHeight = $(this).height();
if(currentHeight > tallestcolumn)
{
tallestcolumn = currentHeight;
}
}
);
columns.height(tallestcolumn);
}

setEqualHeight($(".EqualHeights"));

});
});

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

Вопрос, можно ли добавить какуюто функцию проверки, с интервалом, скажем, в пару секунд?

Спасибо!

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

Зачем javascript? http://jsfiddle.net/tUQU7/1/

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
R
На сайте с 01.10.2013
Offline
87
#2
Оптимизайка:
Зачем javascript? http://jsfiddle.net/tUQU7/1/

Спасибо Оптимизайка, но сли я спрашиваю значит надо именно то что я спрашиваю =)

На самом деле дела обстоят немного сложнее, у меня две колонки фиксированной ширины и 3 самоизменяемые, поэтому проценты тут не катят. Мало того две колонки заполняются изображением CSS с repeat-y и у нее тоже высота изменяемая.

V2
На сайте с 21.06.2013
Offline
47
#3

завяжите функцию на изменение размера окна

$(document).ready(function() { 

$(window).resize(function () {
alert('Изменение размера');
});
});
R
На сайте с 01.10.2013
Offline
87
#4

А как её можно связать с функцией приведенной выше?

V2
На сайте с 21.06.2013
Offline
47
#5

как связать, честно говоря не в курсе, но можно так попробовать:

$(document).ready(function() {
function setEqualHeight(columns) {
var tallestcolumn = 0;
columns.each( function() {
currentHeight = $(this).height();
if(currentHeight > tallestcolumn) {
tallestcolumn = currentHeight;
}
});
columns.height(tallestcolumn);
}
setEqualHeight($(".EqualHeights"));

});

$(document).ready(function() {
$(window).resize(function () {
function setEqualHeight(columns) {
var tallestcolumn = 0;
columns.each( function() {
currentHeight = $(this).height();
if(currentHeight > tallestcolumn) {
tallestcolumn = currentHeight;
}
});
columns.height(tallestcolumn);
}
setEqualHeight($(".EqualHeights"));

});
});

одна срабатывает при загрузке документа, вторая при изменении размера.

Если Ваша функция работает, то должно получиться.

Можно упростить намного, но я не силен в javascript. Обязательно где-нить накосячу.

R
На сайте с 01.10.2013
Offline
87
#6

К сожалению ничего не происходит абсолютно. Невидно никакой разницы.

На самом деле видно через firebag что функция как бы исполняется при изменении размера окна, но высота колонок остаётся той же что зафиксировалась при первой перезагрузке страницы.

дани мапов
На сайте с 06.09.2012
Offline
204
#7


function setEqualHeight(columns) {
var tallestcolumn = 0;
columns.each( function() {
currentHeight = $(this).height();
if(currentHeight > tallestcolumn) {
tallestcolumn = currentHeight;
}
});
columns.height(tallestcolumn);
}

$(document).ready(function() {

setEqualHeight($(".EqualHeights"));

$(window).resize(function () {
setEqualHeight($(".EqualHeights"));
});
});
Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
V2
На сайте с 21.06.2013
Offline
47
#8
Ruson:
К сожалению ничего не происходит абсолютно. Невидно никакой разницы.

На самом деле видно через firebag что функция как бы исполняется при изменении размера окна, но высота колонок остаётся той же что зафиксировалась при первой перезагрузке страницы.

А, ну да. Все правильно. Не поменяется высота, т.к. при загрузке документа columns.height принимает определенное значение и при изменении размера окна currentHeight всегда равно tallestcolumn.

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

Это если я правильно понял фразу "ничего не происходит абсолютно".

дани мапов
На сайте с 06.09.2012
Offline
204
#9

А если функцию отключить, при ресайзе браузера хоть одна колонка меняет высоту как нужно? Если да, то попробовать задержку ввести перед вызовом функции, чтобы браузер успел изменить высоту колонки, как это делается при ресайзе. Если нет - исправлять верстку.

R
На сайте с 01.10.2013
Offline
87
#10

Что бы было более понятно сделал скрины.

jpg picture_0067.jpg
jpg picture_0068.jpg
jpg picture_0069.jpg
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий