Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема с :visible в IE (https://javascript.ru/forum/jquery/3980-problema-s-visible-v-ie.html)

vezunchik 10.06.2009 17:13

Проблема с :visible в IE
 
Подскажите, есть вот такой простой код. При клике по тексту "показать/скрыть" хочу сделать чтобы "скрывающийся текст" прятался или показывался. В FireFox работает, а в эксплорере только прячется. :(

<html>
<head>
<title>test</title>
<script type="text/javascript" src="jquery-1.3.2.js"></script>

<script type="text/javascript">
$(document).ready(function() {
	$(".hide_btn_tsk").click(function(){
	
		if ($(".hide_tsk").is(':visible')) 
			{ 
			  $(".hide_tsk").hide(); 
			  alert('true');
			}
		else 
			{ 
			  $(".hide_tsk").show();
			  alert('false');
			} 
	});
});
</script>

</head>
<body>

<table border="1">
<tr>
<td><span class="hide_btn_tsk">показать/скрыть</span></td>
</tr>
<tr class="hide_tsk">
<td>скрывающийся текст</td>
</tr>
</table>
</body>

</html>

x-yuri 10.06.2009 18:02

visible определяется так
elem.offsetWidth > 0 || elem.offsetHeight > 0;

после скрытия строки
elem.offsetWidth > 0

Riim 10.06.2009 20:55

Цитата:

Сообщение от x-yuri
elem.offsetWidth > 0 || elem.offsetHeight > 0;

Интересная статья про reflow: http://dpp.su/blog/reflow/

Octane 10.06.2009 21:08

Ну вот, придется опять переписывать метод visible в своем фреймворке – дипломном проекте :(
--------------------------------

Цитата:

Сообщение от x-yuri (Сообщение 21510)
visible определяется так
elem.offsetWidth > 0 || elem.offsetHeight > 0;

после скрытия строки
elem.offsetWidth > 0

Так метод hide скрывает при помощи свойства display и в IE нормально срабатывает offsetWidth > 0, проблема в чем то другом.

Kolyaj 11.06.2009 11:13

Цитата:

Сообщение от Octane
Ну вот, придется опять переписывать метод visible в своем фреймворке – дипломном проекте

Зачем? Надо просто понимать, когда запускается reflow, а это не такой уж частый случай.

Octane 11.06.2009 11:48

Про reflow знаю, меня сбило вот это:
Цитата:

Сообщение от x-yuri
после скрытия строки
elem.offsetWidth > 0

Подумал, что для inline-элементов как-то по другому работает, но потом проверил, все нормально offsetWidth == 0

x-yuri 11.06.2009 15:26

Цитата:

Так метод hide скрывает при помощи свойства display и в IE нормально срабатывает offsetWidth > 0, проблема в чем то другом.
после скрытия строки offsetWidth > 0, offsetHeight == 0, display: none (ie 7) и именно из-за этого offsetWidth > 0 строка считается видимой, у меня так

Octane 11.06.2009 15:47

А IE7 установленный в системе или в каком-нибудь IETester?

x-yuri 11.06.2009 15:55

установленный в системе

B~Vladi 11.06.2009 16:00

Цитата:

Сообщение от Octane
А IE7 установленный в системе или в каком-нибудь IETester?

Кстати, давно интересуюсь... на все ли 100% они (ие) одинаковые?! система==IETester???


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