Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.11.2018, 12:30
Новичок на форуме
Отправить личное сообщение для mpavelvl Посмотреть профиль Найти все сообщения от mpavelvl
 
Регистрация: 08.11.2018
Сообщений: 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($(".columns > div.hd2"));
});

Он работает, НО если менять ширину экрана или применять фильтр динамический, то скрипт уже не срабатывает, потому что не перегружается страница.
Подскажите, пожалуйста, как сделать, чтобы скрипт срабатывал постоянно?
Ответить с цитированием
  #2 (permalink)  
Старый 08.11.2018, 12:42
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

$(document).ready(function() {
 setEqualHeight($(".columns > div.hd2"));
 $( window ).resize(function() {
   setEqualHeight($(".columns > div.hd2"));
 });
});


как-то так, наверное...
Ответить с цитированием
  #3 (permalink)  
Старый 08.11.2018, 12:58
Новичок на форуме
Отправить личное сообщение для mpavelvl Посмотреть профиль Найти все сообщения от mpavelvl
 
Регистрация: 08.11.2018
Сообщений: 7

Не работает(((
Ответить с цитированием
  #4 (permalink)  
Старый 08.11.2018, 13:23
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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

верх тоже нужен
Ответить с цитированием
  #5 (permalink)  
Старый 08.11.2018, 13:28
Новичок на форуме
Отправить личное сообщение для mpavelvl Посмотреть профиль Найти все сообщения от mpavelvl
 
Регистрация: 08.11.2018
Сообщений: 7

Сообщение от j0hnik Посмотреть сообщение
верх тоже нужен
Это понятно) Не работает. Если админы разрешат, то вот ссылка, где это блоки: http://vseresume.com/
Ответить с цитированием
  #6 (permalink)  
Старый 08.11.2018, 13:47
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

при резайзе как раз работает, а для фильтра нужно после того как он подгрузить на странницу элементы, найдите функцию которая за это отвечает и воткните туда вниз setEqualHeight($(".columns > div.hd2"));
Ответить с цитированием
  #7 (permalink)  
Старый 08.11.2018, 13:48
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

ну тогда надо вызвать setEqualHeight($(".columns > div.hd2")); после применения фильтра тоже
Ответить с цитированием
  #8 (permalink)  
Старый 08.11.2018, 14:31
Новичок на форуме
Отправить личное сообщение для mpavelvl Посмотреть профиль Найти все сообщения от mpavelvl
 
Регистрация: 08.11.2018
Сообщений: 7

Блин, жесть((( уже втыкал везде, где только можно (((

Вот код фильтра:

function xsort_empty(){
	$("#dle-content").html('<div class="xsort_empty">Ничего не найдено</div>');
}

$(document)
.on('click','.xsort-selected',function(e){
	var ul = $(this).parents('.xsort-div').find('.xsort-ul');
	var d = ul.css('display');
	$('.xsort-ul').hide();
	if(d=='none') ul.slideDown(200);
//	var litop = ul.find('li.current')[0].offsetTop-31;
//	ul.animate({'scrollTop':litop+'px'},100);
	return false;
})
.on('click','.xsort-ul li',function(){
	$this = $(this);
	var text = $this.text();
	var val = $this.data('val');
	var field = $this.parents('.xsort-ul').data('field');
	var sel = $this.parents('.xsort-div');
	if(val!=='') sel.addClass('xsort-active');
	else sel.removeClass('xsort-active');
	sel = sel.find('.xsort-selected');
	var url = window.location.href;
	if(field=='defaultsort'){
		$this.siblings().removeClass('xasc xdesc');
		sel = sel.find('span');
		if(val!==''){
			if($this.hasClass('xdesc')){
				$this.removeClass('xdesc').addClass('xasc');
				sel.attr("class","xasc");
			}else{
				$this.removeClass('xasc').addClass('xdesc');
				sel.attr("class","xdesc");
			}
		}else{
			sel.removeClass('xasc xdesc');
		}
	}else{
		if($(this).hasClass('current')){
			$this.parents('.xsort-ul').find('li').eq(0).click();
			return false;
		}
	}
	sel.html(text);
	$this.addClass('current').siblings().removeClass('current');

	if(url.indexOf('/page/')>=0){
		url = url.split('/page/');
		url = url[0]+'/';
	}
	ShowLoading();
	$(".berrors").remove();
	
	$.ajax({
		url: url,
		type: "POST",
		method: "POST",
		data: {xsort:1,xs_field:field,xs_value:val}
	}).done(function(d){
		HideLoading();
		var html = $("#dle-content",d).html();
		if(html){
			$("#dle-content").html(html);
			if(url != window.location.href) window.history.pushState(null, null, url);
		}else xsort_empty();
	}).fail(function(d){
		HideLoading();
		xsort_empty();
	})
})
.on('click','body:not(.xsort-ul)',function(){
	$('.xsort-ul').fadeOut(100);
})
.on('click','.xsort-div-filler',function(){
	ShowLoading();
	$('#xsort-admin').remove();
	$('body').append('<div id="xsort-admin" title="Поиск и формирование списка значений доп. полей" style="display:none;"/>');
	$.post(dle_root+"engine/mods/xsort/admin.php",{do:'start'},function(d){
		HideLoading();
		$('#xsort-admin').html(d).dialog({
			width: '600px',
			buttons: {
				'Закрыть':function(){
					$(this).dialog('close');
				}
			}
		});
	})
})
.on('click','.xsort-admin-area ul li',function(){
	var ul = $(this).parents('ul');
	ul.addClass('loading');
	if(!$(this).hasClass('current')) $(this).removeClass('xreverse');
	var reverse = $(this).hasClass('xreverse');
	$(this).toggleClass('xreverse');
	$(this).addClass('current').siblings().removeClass('current');
	$.post(dle_root+"engine/mods/xsort/admin.php",{field:$(this).data('field'),reverse:reverse},function(d){
		ul.removeClass('loading');
		$('.xsort-admin-area pre code').html(d);
	})
})
.on('click','.xsort-div-clearall',function(){
	var url = window.location.href;
	if(url.indexOf('/page/')>=0){
		url = url.split('/page/');
		url = url[0]+'/';
	}
	ShowLoading();
	$(".berrors").remove();
	$.ajax({
		url: url,
		type: "POST",
		method: "POST",
		data: {xsort:1,xs_field:'clearallfields'}
	}).done(function(d){
		HideLoading();
		window.location.href = url;
	}).fail(function(d){
		HideLoading();
		xsort_empty();
	})
})
Ответить с цитированием
  #9 (permalink)  
Старый 08.11.2018, 14:53
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

http://api.jquery.com/jquery.ajax/
The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are removed as of jQuery 3.0. You can use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

надо для всех $.ajax и $.post дописать always() или complete() - в зависимости от версии jq

например
$.ajax({
        url: url,
        type: "POST",
        method: "POST",
        data: {xsort:1,xs_field:'clearallfields'}
    }).done(function(d){
        HideLoading();
        window.location.href = url;
    }).fail(function(d){
        HideLoading();
        xsort_empty();
    }).always(function(d) {
        setEqualHeight($(".columns > div.hd2"));
    })
Ответить с цитированием
  #10 (permalink)  
Старый 08.11.2018, 15:14
Новичок на форуме
Отправить личное сообщение для mpavelvl Посмотреть профиль Найти все сообщения от mpavelvl
 
Регистрация: 08.11.2018
Сообщений: 7

Урааа!! Получилось! SuperZen, спасибо большое!!!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выравнивание блоков для сайта js garfild304 Элементы интерфейса 1 15.01.2017 02:12
Выравнивание всех блоков по высоте, и не работающий слайдер cuoresanguinato Элементы интерфейса 1 25.08.2016 18:00
Выравнивание блоков Sanu0074 (X)HTML/CSS 3 24.03.2015 18:01
Выравнивание блоков HTML Sanu0074 (X)HTML/CSS 1 26.02.2015 09:35
Равномерное выравнивание блоков по ширине domius (X)HTML/CSS 1 21.06.2014 11:21