Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 01.12.2016, 13:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,792

Сообщение от Dilettante_Pro
КРОМЕ самого блока и его дочерних элементов?
Так ты и начинай проверять на чем кликнули...
Или это опять мне делать нужно?
Ответить с цитированием
  #12 (permalink)  
Старый 01.12.2016, 13:39
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Как вариант, с тем же недостатком
<style>
.popup {
  position:fixed;
  top:40%;
  left:40%;
  display:none;
  background-color:lightgreen
}
</style>
<button id='i1' value='0'>Mess1</button>
<button id='i2' value='1'>Mess2</button>
<button id='i3' value='2'>Mess3</button>
<button id='i4' value='3'>Mess4</button>
<div class='popup'>ntcy</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
messages =['Сообщение 1','Сообщение 2','Сообщение 3','Сообщение 4'];
$('button').on( "click" , function(e) {
     e.preventDefault();
    $('.popup').css('display','block');
    $('.popup').text(messages[$(this).val()]);
       setTimeout(
            function ()
            {
                 $('body').on('click', closePopup)
            }
        );
        return false;    
});
function closePopup() {
  $('.popup').css('display','none');
  $('body').off('click', closePopup);
};

</script>
Ответить с цитированием
  #13 (permalink)  
Старый 01.12.2016, 13:42
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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

Сообщение от Dilettante_Pro
Просто в вопросе ТС был и этот момент.
Ну хоть что-то он должен сделать сам!
Ответить с цитированием
  #15 (permalink)  
Старый 01.12.2016, 13:49
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,792

Сообщение от Dilettante_Pro
Как вариант, с тем же недостатком
Без недостатка...

<!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 (event){
		var obj=event.target||event.srcElement;
		if ($(obj).hasClass('on') || ($(obj).parents('.on').length>0)) {
			return;
		};
		$('.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>
Ответить с цитированием
  #16 (permalink)  
Старый 01.12.2016, 14:28
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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

Сообщение от Dilettante_Pro
А ТС молчит...
Деньги поди считает...
Ответить с цитированием
  #18 (permalink)  
Старый 01.12.2016, 14:51
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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

Сообщение от Dilettante_Pro
срабатывает только один раз
Это тут...
Ты копирни текст и сохрани локально, потом запусти.

Тут на форуме структура документа более сложная...
Ответить с цитированием
  #20 (permalink)  
Старый 01.12.2016, 15:02
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Мой вариант без недостатка вроде живой
<style>
.popup {
  position:fixed;
  top:40%;
  left:40%;
  display:none;
  font-size: 20pt;
  background-color:lightgreen
}
</style>
<button id='i1' value='0'>Mess1</button>  <!-- value - индекс для сообщения -->
<button id='i2' value='1'>Mess2</button>
<button id='i3' value='2'>Mess3</button>
<button id='i4' value='3'>Mess4</button>
<div class='popup'></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
messages =['Сообщение 1','Сообщение 2','Сообщение 3','Сообщение 4'];  // набор сообщений
$('button').on( "click" , function(e) {              // клик по кнопке
                
    $('.popup').css('display','block');               // показ блока
    $('.popup').text(messages[$(this).val()]);   // вставка нужного сообщения в блок
       setTimeout(                                       // ksa сказал зачем 
            function ()
            {
                 $('body').on('click', closePopup)  // включение закрытия по клику везде
            }
        );
        return false;    
});
function closePopup(event) {           // описание закрытия по клику везде
  var obj=event.target||event.srcElement; // кликнутый элемент
  if ($(obj).hasClass('popup'))  return;      // кроме клика по popup
  $('.popup').css('display','none');            // закрытие блока
  $('body').off('click', closePopup);           // выключение закрытия по клику везде
};

</script>

Последний раз редактировалось Dilettante_Pro, 01.12.2016 в 15:44.
Ответить с цитированием
Ответ



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

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


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