Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как проверить скрыт/отображается объект? (https://javascript.ru/forum/jquery/3582-kak-proverit-skryt-otobrazhaetsya-obekt.html)

`p r o x y 04.05.2009 22:49

как проверить скрыт/отображается объект?
 
jQuery.fn.toggle = function(){
	this.each(function(){
		var me = jQuery(this);
		me.prepend(
			jQuery('<span>&#8593;&nbsp;</span><span class="error">Ошибка:&nbsp;</span>')
		);
		me.css('cursor', 'pointer').bind('click', function(e){
			//alert(me.attr('idd'));
			var p13_lh14 = $('div.p13_lh14:has(textarea#'+me.attr('idd')+')');
			p13_lh14.slideToggle('fast', function(){
				if($(p13_lh14+':hidden')){
					me.find('span:first').html('<span>&#8595;&nbsp;</span>');
				}else{
					me.find('span:first').html('<span>&#8593;&nbsp;</span>');
				}
			});
		});
	});
	return false;
}

$(document).ready(function(){
  $('textarea').resizer();
  $('h1').toggle();
  $('h1 span.error').hide();
});


вот тут участок с if - как правильно его сделать?
если такое, или приписывать скрытому блоку какойнить атрибут и потом по нему проверять?

SDone 05.05.2009 00:06

function noviewinput (id)
	{
		$("#"+id).css({display: ""});
		$("#in"+id).css({display: "none"});
	}


а если так скрывать?
при анимации моно прозрачность в 0 свести и тоже будет скрыт.

SDone 05.05.2009 00:08

ну конено в переменную вносить скрыт или открыт.
или смотреть что в дисплей стоит.

`p r o x y 05.05.2009 00:14

SDone,
просто делаю все в одной функции, смысл еще одни функции делать?
или это для примера?

не совсем понял зачем "#in"+id...пока, решил так:

h1.bind('click', function(){
			p13_lh14.slideToggle('fast', function(){
				if(p13_lh14.data('show')){
					p13_lh14.data('show', 0);
					h1.find('span:first').html('<span>&#8595;&nbsp;</span>');
				}else{
					p13_lh14.data('show', 1);
					h1.find('span:first').html('<span>&#8593;&nbsp;</span>');
				}
			});
		});


в js это нормально или лучше по другому?

SDone 05.05.2009 00:18

"#in"+id - да это просто пример. показать как с див работать.
если пашет так то че и менять?

Иногда не до красоты. :victory:

x-yuri 05.05.2009 00:32

Цитата:

в js это нормально или лучше по другому?
это скорее jQuery-решение, имхо, нормальное. Без использования библиотек обычно пишут
if( p13_lh14.style.display == 'none' ) ...

(если оно изменяется в процессе)

e1f 05.05.2009 00:42

"По-джикверевски" :) наверное так:
$('#myid').is(':hidden')

Вот это:
if($(p13_lh14+':hidden'))
работать будет всегда, даже если не найдется элемент -- jquery ведь возвращает объект, даже если ничего не нашло, а проверить, попалось ли что-то, можно через метод size:
if($(p13_lh14+':hidden').size()){...}

`p r o x y 05.05.2009 01:06

SDone,
x-yuri,
e1f,
Благодарю! Классно, вчера весь день колопатил мануалы и 0 результат )
Сегодня прям прорыв - уже начинается нравится js, который до этого обходил стороной ))


if($(p13_lh14+':hidden').size()){...}

а в смысле? ...зачем и что проверять?

x-yuri 05.05.2009 01:13

if($(p13_lh14+':hidden'))

а почему у меня не работает? Объект всегда возвращается, потому всегда true будет. Am I wrong?
и непонятно, что такое p13_lh14+':hidden'... в p13_lh14 должно быть '#myid'?
if($(p13_lh14+':hidden').size()){...}

проверка отображается ли элемент... в p13_lh14 должно быть '#myid' как я понял, ну т.е. можно так
if($('#myid:hidden').size()){...}

`p r o x y 05.05.2009 01:18

Цитата:

и непонятно, что такое p13_lh14+':hidden'... в p13_lh14 должно быть '#myid'?
у меня это вот это:
var p13_lh14 = $(this).find('div.p13_lh14');

`p r o x y 05.05.2009 01:22

у меня так же:
Цитата:

а почему у меня не работает? Объект всегда возвращается, потому всегда true будет. Am I wrong?

x-yuri 05.05.2009 02:10

var p13_lh14 = $(this).find('div.p13_lh14');

т.е. в p13_lh14 может быть несколько элементов? Может в этом случае лушче id воспользоваться? $('#idOfElement')

`p r o x y 05.05.2009 03:27

по структуре у меня может быть только 1 div.p13_lh14
и только в одном блоке много, и поэтому ищу так:
var p13_lh14 = $(this).find('div.p13_lh14:first');

просто так минимизируется html...хотя мелочь конечно..

e1f 05.05.2009 09:10

Тогда и не должно работать, что такое конкатенация строки и объекта jquery? Тогда делайте так:
if(p13_lh14.is(':hidden')){...}

`p r o x y 05.05.2009 18:52

Благодраю - работает!
Вопрос решен!


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