Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Некорректная работа slideUp и slideDown (https://javascript.ru/forum/jquery/27666-nekorrektnaya-rabota-slideup-i-slidedown.html)

vuler 20.04.2012 19:15

Некорректная работа slideUp и slideDown
 
Есть небольшой html к которому подручены 2 функции.
1-показывает все необходимые блоки - slideDown();
2-скрывает все все эти блоки - slideUp();
Проблема в том, что если нужные блоки находятся в скрытых блоках - например - <div hidden><div hidden class="нужный блок"></div></div>
то для них 1-я функция работает нормально. в этих невидимых блоках - они становятся видимыми. Но вот 2-я функция наотрез отказывается работать. если блок в котором находится нужны элемент скрыт - slideUp нужные блоки игнорирует, если блок открыт, то все нормально. Как можно эту проблему поправить? вместо slideUp() применял hide(). Эффект то же.
вот пример кода.
function show_edit_firm(){
	$('.edit_firm_inp,.edit_block,.firm_info').each(function(){
		$(this).slideDown('500');
	})
}

function hide_edit_firm(){
	$('.edit_firm_inp,.edit_block,.edit_block:hidden').each(function(){
		$(this).slideUp('500');
	})
	$('.firm_info').each(function(){
		if($(this).html()==' : ')
		$(this).slideUp();
	})
}

atlantis 20.04.2012 19:48

Не знаю, но я такого никогда не видел "<div hidden>" :)
Мб в css прописать будет лучше?

vuler 20.04.2012 19:59

ну div hidden - это тоже самое что и display:none.
В общем проблему решил очень топорным методом :(
function hide_edit_firm(){
	$('.fil_dop_info').each(function(){ //открывает все блоки, где находятся нужны элементы которые нужно скрыть.
		$(this).show();
	})
	$('.edit_firm_inp,.edit_block').each(function(){
		$(this).slideUp(); // скрывает элементы edit_firm_inp которые находятся внутри блоков fil_dop_info
	})
	$('.fil_dop_info').each(function(){ //скрывает все блоки, обратно, в который производилось предыдущее действие.
		$(this).hide();
	})
}

vuler 20.04.2012 20:01

но справедливости ради могу сказать что $(this).css('display','none') проблему решает в миг, но собственно задумка всей анимации slideUp пропадает.

sysya 25.04.2012 00:31

не понятно зачем здесь each
все эти методы итак работают для всего набора элементов

элемент находящийся внутри скрытого элемента тоже будет скрыт и действия над ним будут также не видны, если правильно понял вашу проблему

и преиведите также пример HTML-кода, с которым работает скрипт


Часовой пояс GMT +3, время: 23:39.