Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.12.2016, 04:41
Новичок на форуме
Отправить личное сообщение для VGreen Посмотреть профиль Найти все сообщения от VGreen
 
Регистрация: 01.12.2016
Сообщений: 7

убрать при клике в другом месте
всем доброго времени суток
выручайте, начал изучать js и столкнулся с проблемой, не могу реализовать такую фишку
есть блок который по умолчанию не виден, при клике скажем на ссылку этот блок появляется, но и закрывается он тоже по клику на данную ссылку. Как организовать так чтобы он закрывался не только по клику на ссылку но и по любой другой области КРОМЕ самого блока и его дочерних элементов???
а тут все имеющиеся коды http://codepen.io/v-green/pen/LbOvKM

PS если можно еще и комментарии добавьте пожалуйста
Ответить с цитированием
  #2 (permalink)  
Старый 01.12.2016, 09:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от VGreen
Как организовать так чтобы он закрывался не только по клику на ссылку но и по любой другой области КРОМЕ самого блока и его дочерних элементов?
Цитата:
обычно все это делают так
function openPopup(e)
{
//показываем попап
}
function closePopup (e)
{
// скрываем поп-ап
    $('body').off('click', closePopup);
}

$('button').on(
    'click',
    function (e)
    {
        e.preventDefault();
        openPopup(e);
        setTimeout(
            function ()
            {
                 $('body').on('click', closePopup)
            }
        );
        return false;
    }
);

setTimeout в данном случае приводит все реализации "всплытия" событий к единообразию. Он откладывает выполнение привязки закрытия события на время, когда событие закончится.
Взято тут...
Ответить с цитированием
  #3 (permalink)  
Старый 01.12.2016, 11:24
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

ksa,
А если дивов и кнопок несколько, как в примере ТС?
Ответить с цитированием
  #4 (permalink)  
Старый 01.12.2016, 11:36
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Dilettante_Pro
А если дивов и кнопок несколько
Их не давят одновременно...
Всплывающие ДИВы можно свести к одному, заполняя его разным контентом...
Зная дочерний элемент, всегда можно проверить "нет ли родителя с определенным классом или еще чем-то"...

Т.о. используя, описанный выше, подход можно решить данную проблему.
Ответить с цитированием
  #5 (permalink)  
Старый 01.12.2016, 12:32
Новичок на форуме
Отправить личное сообщение для VGreen Посмотреть профиль Найти все сообщения от VGreen
 
Регистрация: 01.12.2016
Сообщений: 7

ksa, это конечно хорошо, но немного не то, поскольку дивов много, а скрипт надо один, да и использоваться он будет не как поп-ап окно, а нечто вроде подсказки но с возможностью донести до пользователя информацию, например сделать мини-профиль, форму входа, форму поиска, блок сортировки файлов и тд и тп
Ответить с цитированием
  #6 (permalink)  
Старый 01.12.2016, 13:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от VGreen
использоваться он будет не как поп-ап окно, а нечто вроде подсказки
Те же груши, только боком...
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2016, 13:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

VGreen, если не понимаешь принцип "закрывания вне элемента" - просто сделай кнопочку "Х" в правом верхнем углу твоей "подсказки".
Нажимая на ту кнопочку элемент будет исчезать...
Ответить с цитированием
  #8 (permalink)  
Старый 01.12.2016, 13:45
Новичок на форуме
Отправить личное сообщение для VGreen Посмотреть профиль Найти все сообщения от VGreen
 
Регистрация: 01.12.2016
Сообщений: 7

это уже велосипед, кликай ссылку она и закроет. А так да, я не понимаю принцип закрытия вне элемента, потому и написал с просьбой помочь
Ответить с цитированием
  #9 (permalink)  
Старый 01.12.2016, 14:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Как вариант...

<!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>
Ответить с цитированием
  #10 (permalink)  
Старый 01.12.2016, 14:36
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

ksa,
Все замечательно, за исключением одного момента:
Сообщение от VGreen
по любой другой области КРОМЕ самого блока и его дочерних элементов???
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике на элемент он поднимается вверх, а на его месте появляется другой! barakuda jQuery 12 14.11.2015 17:36
Исчезновение меню при клике на ссылку wiserfild Элементы интерфейса 4 24.10.2015 19:50
Кто напишет? (popup при втором и/или третьем клике) webtraf jQuery 0 30.07.2013 14:35
Изменение фона элемента при клике. psydo Элементы интерфейса 8 28.06.2012 23:53
Вопрос по jquery. Как запретить один из скриптов при клике vuler Общие вопросы Javascript 1 07.03.2012 22:35