Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.11.2014, 19:43
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var h = document.documentElement,
    matches = h.matches || h.matchesSelector || h.webkitMatchesSelector || h.oMatchesSelector || h.mozMatchesSelector || h.msMatchesSelector || function(selector) {
     		var elems = this.parentNode.querySelectorAll(selector), i;
			for(i=0; i<elems.length; i++) if(elems[i] === this) return true;
		};


document.onclick = function(e) {
    if(!matches.call(e.target, '.list, .list div')) {
         //Скрываем элемент
    }
};

Последний раз редактировалось ruslan_mart, 02.11.2014 в 19:46.
Ответить с цитированием
  #12 (permalink)  
Старый 02.11.2014, 20:04
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Ruslan_xDD,
ваш примет по таймауту показывает результат получше)) плюсую
если есть еще какие предложения, буду раз услывашь
Ответить с цитированием
  #13 (permalink)  
Старый 02.11.2014, 20:46
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

вот моя еще одна версия, честно сказать она мне больше понравилась))

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title>Example</title>  
		<style>
.list {
	position: absolute;
	background-color: white;
	margin: 5px 0px 5px 0px;
	border: 1px solid black;
	z-index: 5000;
	width: 200px;
}

.list div:hover {
	background-color: yellow;
	cursor: pointer;
}
		</style>
    </head>
	<body>
		<input type="text" value="234" onfocus="f(this);" onclick="event.stopPropagation();">
		<div class="list" onclick="s(this, event)" style="display: none;">
			<div>111111</div>
			<div>222222</div>
			<div>333333</div>
		</div>
	<script>
	var menu = document.querySelector('.list'),
		input = document.querySelector('input');
	
	function f (ths) {
		menu.style.display = 'block';
		
		window.onclick = function () {
			menu.style.display = 'none';
		}
	}
	
	function s (ths, event) {
		var v = event.target.innerHTML;
		input.value = v;
		if (v == '222222')
			return;
		ths.style.display = 'none';
		
		event.stopPropagation();
	}
	</script>
    </body>
</html>



п.с. конечно урезанал, но думаю кому надо суть поймет
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Контекстное меню в модальных окнах 2chan Общие вопросы Javascript 3 11.10.2014 11:15
Контекстное меню в модальных окнах 2chan Firefox/Mozilla 0 26.09.2014 20:33
Выделение активных пунктов многоуровневого меню на jQuery Letto Элементы интерфейса 2 04.12.2013 15:30
Контекстное меню как считать данные из таблицы xela1980 jQuery 25 31.05.2013 14:20
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36