убрать при клике в другом месте
всем доброго времени суток
выручайте, начал изучать js и столкнулся с проблемой, не могу реализовать такую фишку есть блок который по умолчанию не виден, при клике скажем на ссылку этот блок появляется, но и закрывается он тоже по клику на данную ссылку. Как организовать так чтобы он закрывался не только по клику на ссылку но и по любой другой области КРОМЕ самого блока и его дочерних элементов??? а тут все имеющиеся коды http://codepen.io/v-green/pen/LbOvKM PS если можно еще и комментарии добавьте пожалуйста |
Цитата:
Цитата:
|
ksa,
А если дивов и кнопок несколько, как в примере ТС? |
Цитата:
Всплывающие ДИВы можно свести к одному, заполняя его разным контентом... Зная дочерний элемент, всегда можно проверить "нет ли родителя с определенным классом или еще чем-то"... Т.о. используя, описанный выше, подход можно решить данную проблему. |
ksa, это конечно хорошо, но немного не то, поскольку дивов много, а скрипт надо один, да и использоваться он будет не как поп-ап окно, а нечто вроде подсказки но с возможностью донести до пользователя информацию, например сделать мини-профиль, форму входа, форму поиска, блок сортировки файлов и тд и тп
|
Цитата:
|
VGreen, если не понимаешь принцип "закрывания вне элемента" - просто сделай кнопочку "Х" в правом верхнем углу твоей "подсказки".
Нажимая на ту кнопочку элемент будет исчезать... ;) |
это уже велосипед, кликай ссылку она и закроет. А так да, я не понимаю принцип закрытия вне элемента, потому и написал с просьбой помочь :(
|
Как вариант...
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='http://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> div { display: none; border: 1px solid; } .on { display: block; } a { display: block; margin-top: 20px; } a:first-child { margin-top: auto; } </style> <script type='text/javascript'> $(function(){ $('a').click(function(){ $(this).next().addClass('on'); setTimeout(function(){ $(document).on('click', closePopup); },500); }); function closePopup (){ $('.on').removeClass('on') $(document).off('click', closePopup); } }); </script> </head> <body> <a href="#">Открыть</a> <div id="box1">Наш блок 1</div> <a href="#">Открыть</a> <div id="box2">Наш блок 2</div> <a href="#">Открыть</a> <div id="box3">Наш блок 3</div> <a href="#">Открыть</a> <div id="box4">Наш блок 4</div> <a href="#">Открыть</a> <div id="box5">Наш блок 5</div> </body> </html> |
ksa,
Все замечательно, за исключением одного момента: Цитата:
|
Часовой пояс GMT +3, время: 21:08. |