Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jQuery, slideToggle, position: relative (изображения становятся невидимыми) (https://javascript.ru/forum/jquery/3987-jquery-slidetoggle-position-relative-izobrazheniya-stanovyatsya-nevidimymi.html)

x-yuri 11.06.2009 05:23

jQuery, slideToggle, position: relative (изображения становятся невидимыми)
 
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"></script>
	<script type="text/javascript">
		$(function() {
		$('a').click(function() {
			$('div').slideToggle(500);
			return false;
		});
		});
	</script>
<div style="display: none; position: relative;"><img>a</div>
<a href="#">link</a>

когда завершается появление div'а, изображения исчезают. Происходит это примерно на строчке 4113 (jquery-1.3.2):
this.elem.style.overflow = this.options.overflow;

где div'у возвращается его изначальное значение overflow (''), во время анимации overflow: hidden. В результате currentStyle.overflow == 'visible'. Вопрос вроде очевиден. Участие приветствуется ;)

p.s. обсуждалось вот здесь, но ТС, добавив к своему непонятно зачем нужному "position: relative" "float: left" и, обрадовавшись, что работает, поспешил закрыть тему

UPD: странно, я ж помню, что после комментирования этой строчки работало :blink:. По последним данным проблема в jQuery.attr (чуть позже, 4128)

UPD2: да уж, получилось сократить до
<div style="display: none; position: relative;"><img>a</div>
<a href="#" onclick="
    var style = document.getElementsByTagName('div')[0].style;
    style.display = 'block';
    style.height = '30px';
    style.height = '';
">link</a>

e1f 11.06.2009 06:23

Кстати, у меня ИЕ7 картинку показал, если сделать ресайз окна
Добавил к div'у zoom:1, картинка также появилась :)

Видимо, проблема именно в отсутствии св-ва hasLayout для приснопамятного div'a. float:left придает ему hasLayout = true, поэтому в зацепившей это теме ТС решил проблему. Наткнулся на "почитать" здесь


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