Javascript.RU

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

появление блока при наведении JS
Вот у меня есть скрипт, он рабочий, при наведении на <div id="block">Сюда надо навести</div> появляется <div rel="block" class="hover">Текст появится</div>

мне нужно сделать так, что после того как появился <div rel="block" class="hover">Текст появится</div> и я навел на него мышкой он не исчезал, пока я не выйду курсором за его границы! Подправьте пожалуйста этот скрипт, или может предложите свой вариант!
<script>
$(document).ready(function(){
$('.hover').each(function(){
var hover=$(this);
hover.hide();
$("#"+hover.attr('rel')).hover(function(){
hover.toggle(0);
});
});
});
</script>

<div id="block">Сюда надо навести</div>
<div rel="block" class="hover">Текст появится</div>
Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2014, 17:09
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

не знаю для чего это нужно,
но может быть достаточно просто Css решения?

http://learn.javascript.ru/play/noLmec
Ответить с цитированием
  #3 (permalink)  
Старый 21.08.2014, 18:01
Новичок на форуме
Отправить личное сообщение для 1mmortal Посмотреть профиль Найти все сообщения от 1mmortal
 
Регистрация: 21.08.2014
Сообщений: 3

Сообщение от Pavel M. Посмотреть сообщение
не знаю для чего это нужно,
но может быть достаточно просто Css решения?

http://learn.javascript.ru/play/noLmec
А как тогда так сделать, если элементы находятся в разных блоках
допустим
<div id="w1">
<div id="block">Сюда надо навести</div>
</div>
<div id="w2">
<div rel="block" class="hover">Текст появится</div>
</div>
Ответить с цитированием
  #4 (permalink)  
Старый 21.08.2014, 18:43
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

фух, написал))
<html>
	<head>
		<title>example</title>
		<style>
.block
{
overflow: hidden;
}

.over
{
float: left;
}

.item
{
float: left;
margin-left: 10px;
display: none;
}
		</style>
	</head>
	<body>
<div class="block">
	<div class="over" group="g1">over</div>
	<div class="item" group="g1">block 1</div>
	<div class="item" group="g1">block 2</div>
</div>

<div class="block">
	<div class="over" group="g2">over</div>
	<div class="item" group="g2">block 3</div>
	<div class="item" group="g2">block 4</div>
	<div class="item" group="g2">block 5</div>
</div>

<div class="block">
	<div class="over" group="g3">over</div>
	<div class="item" group="g3">block 6</div>
	<div class="item" group="g3">block 7</div>
</div>

		<script>
 function show (dom)
	{
	var group = dom.getAttribute('group'),
		selector = '*[group=' + group + ']';
	
	var doms = document.querySelectorAll(selector);
	var time = null;
	
	Array.prototype.forEach.call(doms, function (ths)
		{
		ths.onmouseover = function ()
			{
			if (time)
				{
				clearTimeout(time);
				return;
				}
			
			Array.prototype.forEach.call(doms, function (ths)
				{
				if (ths != dom)
					ths.style.display = 'block';
				});
			};
		
		ths.onmouseout = function ()
			{
			time = setTimeout(function ()
				{
				time = null;
				Array.prototype.forEach.call(doms, function (ths)
					{
					if (ths != dom)
						ths.style.display = 'none';
					});
				}, 1000);
			};
		});
	}
	
Array.prototype.forEach.call(document.querySelectorAll('.over'), function (ths)
	{
	show(ths);
	});
		</script>
	</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 21.08.2014, 18:54
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от 1mmortal
А как тогда так сделать, если элементы находятся в разных блоках
можно использовать немного JS
http://learn.javascript.ru/play/53uHYb
Ответить с цитированием
  #6 (permalink)  
Старый 21.08.2014, 19:07
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Pavel M., во-первых у меня с расширенным функционалом, а во-вторых у вас криво
Ответить с цитированием
  #7 (permalink)  
Старый 21.08.2014, 21:40
Новичок на форуме
Отправить личное сообщение для 1mmortal Посмотреть профиль Найти все сообщения от 1mmortal
 
Регистрация: 21.08.2014
Сообщений: 3

Сообщение от skrudjmakdak Посмотреть сообщение
фух, написал))
<html>
	<head>
		<title>example</title>
		<style>
.block
{
overflow: hidden;
}

.over
{
float: left;
}

.item
{
float: left;
margin-left: 10px;
display: none;
}
		</style>
	</head>
	<body>
<div class="block">
	<div class="over" group="g1">over</div>
	<div class="item" group="g1">block 1</div>
	<div class="item" group="g1">block 2</div>
</div>

<div class="block">
	<div class="over" group="g2">over</div>
	<div class="item" group="g2">block 3</div>
	<div class="item" group="g2">block 4</div>
	<div class="item" group="g2">block 5</div>
</div>

<div class="block">
	<div class="over" group="g3">over</div>
	<div class="item" group="g3">block 6</div>
	<div class="item" group="g3">block 7</div>
</div>

		<script>
 function show (dom)
	{
	var group = dom.getAttribute('group'),
		selector = '*[group=' + group + ']';
	
	var doms = document.querySelectorAll(selector);
	var time = null;
	
	Array.prototype.forEach.call(doms, function (ths)
		{
		ths.onmouseover = function ()
			{
			if (time)
				{
				clearTimeout(time);
				return;
				}
			
			Array.prototype.forEach.call(doms, function (ths)
				{
				if (ths != dom)
					ths.style.display = 'block';
				});
			};
		
		ths.onmouseout = function ()
			{
			time = setTimeout(function ()
				{
				time = null;
				Array.prototype.forEach.call(doms, function (ths)
					{
					if (ths != dom)
						ths.style.display = 'none';
					});
				}, 1000);
			};
		});
	}
	
Array.prototype.forEach.call(document.querySelectorAll('.over'), function (ths)
	{
	show(ths);
	});
		</script>
	</body>
</html>
Спасибо большое)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
смена div блока при наведении курсора мыши Денис2201 Общие вопросы Javascript 3 07.10.2013 13:43
Помогите с небольшим эффектом на JS. При наведении курсора.. bayanruby Элементы интерфейса 10 27.05.2012 02:44
Два блока div разъезжаются при скроллинге окна браузера. call007 jQuery 0 03.04.2011 16:21
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Изменение цвета ячейки в таблице, при наведении на строку другой таблицы Psychosonic Общие вопросы Javascript 12 24.11.2010 16:44