Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.02.2012, 13:35
Интересующийся
Отправить личное сообщение для Грабовский Посмотреть профиль Найти все сообщения от Грабовский
 
Регистрация: 15.01.2012
Сообщений: 12

hover через 1 секунду
Доброго времени суток, уважаемые программисты!

Есть элемент div id=hovcl, при наведении на него под ним появляется другой div id=kont position=absolute, при отведении от элемента id=kont исчезает. Это всё работает.

Проблема в том что каждый раз когда мышка проскальзывает id=hovcl появляется id=kont (т.е. вывод kont не планировалось).

Как сделать так что б метод hover вступал в действие после того как пройдёт 1 секунда после наведения на элемент id=hovcl ?
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2012, 16:14
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

если это работает на жс, то можно просто через сетинтервал:

setInterval(function(){
 $('#kont').show();
}, 1000);
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2012, 16:24
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

Сообщение от Грабовский Посмотреть сообщение
Доброго времени суток, уважаемые программисты!

Есть элемент div id=hovcl, при наведении на него под ним появляется другой div id=kont position=absolute, при отведении от элемента id=kont исчезает. Это всё работает.

Проблема в том что каждый раз когда мышка проскальзывает id=hovcl появляется id=kont (т.е. вывод kont не планировалось).

Как сделать так что б метод hover вступал в действие после того как пройдёт 1 секунда после наведения на элемент id=hovcl ?
Накатал по быстрому - вроде работает

<html>
<head>
<style type = "text/css">
#base {
position:relative;
width:200px;
height:100px;
background-color:blue;
}
#temp {
position:absolute;
width:50px;
height:50px;
background-color:red;
display:none;
}
</style>
</head>
</html>
<body>
<div id = "base"><div id ="temp"></div></div>
<script>
//ф-ция для эмуляции событий mouseenter/mouseleave в старых браузерах
function isOutside(e, parent) {
  var relatedTarget = e.relatedTarget;
  if (!relatedTarget) {    
    relatedTarget = (e.type == 'mouseout') ? e.toElement : e.fromElement;
  }  
  while (relatedTarget && relatedTarget !== parent) {
    relatedTarget = relatedTarget.parentNode;
  }
  return !relatedTarget ;
}   
    
var base = document.getElementById("base");
var temp = document.getElementById("temp");

var timerId;
function makeVisible(elem) {
    elem.style.display = "block";
}

base.onmouseover = function(e){
    e = e || event;
    if (!isOutside(e, this)) return; // отсечь событие
    timerId = setTimeout(function() {makeVisible(temp)}, 1000);    
}
base.onmouseout = function(e){     
    e = e || event;
    if (!isOutside(e, this)) return; // отсечь событие
    clearTimeout(timerId);
    temp.style.display = "none";
}
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 18.02.2012, 17:58
Интересующийся
Отправить личное сообщение для Грабовский Посмотреть профиль Найти все сообщения от Грабовский
 
Регистрация: 15.01.2012
Сообщений: 12

Всё работает идеально.
Спасибо, Shaci.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Асинхронная отправка файла через jQuery InviS jQuery 3 23.04.2013 22:27
кеширование HTML переданого через ajax BorisBritva jQuery 6 02.04.2011 01:23
Изменение стиля родительского элемента при :hover дочернего lanzs Элементы интерфейса 2 16.10.2010 13:28
Открытие фоток через hover, по возможности авторолл самой галереи vito Элементы интерфейса 1 27.02.2010 16:04
XMLHTTPRequest передача имя через POST dds AJAX и COMET 0 14.08.2008 14:44