Показать сообщение отдельно
  #1 (permalink)  
Старый 04.04.2012, 03:21
Интересующийся
Отправить личное сообщение для gradus Посмотреть профиль Найти все сообщения от gradus
 
Регистрация: 18.02.2011
Сообщений: 24

Скрыть элементы при клике за их пределами
На странице может быть куча элементов открытых, за каждым надо следить если кликнули мимо.
вот что я сделал, конечно работает но это ужасный способ:
masClos=new Array();
 $(document).click( function(event){
 var txt='';
       for(var idC in masClos){
 txt+='idC='+idC+'\n';
	if( $(event.target).closest(masClos[idC][0]).length ) 
        continue;
      $(masClos[idC][1]).hide();
      delete masClos[idC];
	}
	alert(txt);
	event.stopPropagation();
    });
 function closeT(idif,idcl){
 if(!idcl) idcl=idif;
	masClos.push([idif,idcl]);
}

<input type="text"  name="adds_n_p" id="adds_n_p" value="Введите имя" 
onfocus="closeT('#pseClose','#add_str')">

ужасный потому что
1)нет проверки на повторный вызов, можно кликать и всё время будет добавляться массив
2)даже если нажать один раз и потом кликнуть вне элемента, alert(txt); выдаёт
idC=0
idC=1 // - откуда второй взялся я не понял

В общем подскажите способ, в идеале вообще бы $(document).click убрать если не открыто ни одно окно которое нужно закрыть при промыхе

Последний раз редактировалось gradus, 04.04.2012 в 03:33.
Ответить с цитированием