Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Свернуть при нажатии на страницу выпадающий список 
:(
    Опции темы
abalich
Дата 26.9.2012, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

Репутация: нет
Всего: нет



Добрый вечер. Сделал выпадающий список на JS. НУ там все просто. есть DIV которые просто при нажатии увеличивает свою высоту и становиться overflow:auto а был hidden.
Но суть не в этом. Мне нужно что бы при нажатии на любое место в документе, он свернулся. Если я делаю document.onclick = function(){$('#myDiv').hide(); } то при самом нажатии на DIV что бы он развернулся, он сразу же пропадает.. т.е. нажатие на это DIV и есть document.onclick

Как это реализуется ? 

Вот тут не смог разобраться, как сделано

http://dropdown-check-list.googlecode.com/...nchecklist.html

Но как то же сделано)))



--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
Evghenusi
Дата 26.9.2012, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 1
Всего: 15



я бы при клике на странице, проверил от кого пришёл клик, и если это не #myDiv то $('#myDiv').hide();
PM WWW   Вверх
abalich
Дата 26.9.2012, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

Репутация: нет
Всего: нет



Evghenusi, подскажи как это сделать ? плиз!


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
Sanchezzz
Дата 27.9.2012, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 3
Всего: 60



Код

$(function(){

var    $html = $('html').get(0);
$(document).on('click', function(e) {
if(e.target === document.body | e.target === $html) {
  // этот клик будет срабатывать если только на body нажали а не на элементы внутри боди
  $('#ID_DIV').hide(280);
}
});
});


Если не нужна проверка, что это чистый боди убери условия проверки e.target === document.body | e.target === $html
Без проверки на любой элемент щелкаем менющка закрываться будет, тогда тебе придется построить исключения проверки на кликах самой менюшки по выше указанному примеру.
Что бы исключить той проблемы которая у тебя описана в вопросе решается проверкой $(this).get(0)!==e.target



Это сообщение отредактировал(а) Sanchezzz - 27.9.2012, 07:41


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Aliance
Дата 27.9.2012, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Зачем такие костыли? Данная проблема (а вообще говоря это не проблема, а фича) происходит из-за механизма capturing событий. Не буду расписывать что это такое, подробно можно почитать тут: http://forum.vingrad.ru/forum/topic-32350.html (2-5 посты).

Вот рабочий пример: http://jsfiddle.net/Aliance/N3cNR/
PM MAIL WWW ICQ Skype   Вверх
abalich
Дата 27.9.2012, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

Репутация: нет
Всего: нет



Sanchezzz, спасибо Не совсем разобрался как сделать что бы при нажатии на любой объект кроме нужного мне DIV

делаю вот так

Код

$(document).on('click', function(e){
                          if(e.target !== $('.imgselectfontname')){
                              $('.selectfontbox').hide();
                          }
                       });


т.е. хочу что бы при нажатии на любой место на сайте кроме imgselectfontname срабатывала функция

Добавлено через 5 минут и 36 секунд
Aliance, а если у меня при нажатии на нужный див функция вызывается т.е. стоит onclick=somefunction()
как передать e ?

Добавлено через 7 минут и 5 секунд
Aliance, Все спасибо РАЗОБРАЛСЯ event.stopPropagation()


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0487 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.