Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как скрыть элемент(-ы) по клику в любом месте


Автор: Sinneren 24.7.2012, 13:28
банальный пример - Lightbox, когда кликаем на окружающее его пространство, галерея закрывается. 
сама подсказка(слой/элемент) переключается через toggle().
вот структура,как сделано у меня появление эл-а.
Код

<div onClick="$(this).children().toggle();">
 <div class="tip">элементы</div>
</div>

Если поставить обработчик onclick на body чтобы скрыть все .tip, то показываться не будет вообще, видимо клик по предку как по самому считается, чтоль. Как можно решить проблему?
У самого LB решение слишком мудрёное и мне не понятное
Код

return $('body').on('click', 'a[rel^=lightbox], area[rel^=lightbox]', function(e) {
        _this.start($(e.currentTarget));
        return false;
});

Автор: Aliance 25.7.2012, 09:36
Цитата(Sinneren @  24.7.2012,  14:28 Найти цитируемый пост)
Если поставить обработчик onclick на body чтобы скрыть все .tip, то показываться не будет вообще,

будет, если сделать всё грамотно.

1) Вариант как у LB: повесить событие на все, кроме ссылок относящихся к лайтбоксу. Тогда клик по ссылке будет обрабатываться отдельно, клик по всему остальному закрывать.
2) Отменить всплывание события (подбробнее в статье в моей подписи).
3) Сделать промежуточный слой с затемнением и ловить клик по нему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)