Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка координат через определённый прожеуток времени

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
armancho7777777 Супермодератор
Отправлено: 13 Января, 2012 - 19:49:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Всем привет!
В гугле путём ничего не нашёл, так как запрос был такой же, что и название темы.
Просто это не совсем то, что мне надо.
Мне надо отследить координаты мыши после события hover над элементом, дочерний элемент которого должен появиться,
и если курсор через 1 секунду всё ещё находится над ним, то должен появиться тот дочерний елемент, а иначе нет.

Делаю так:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. $('#divBody').mousemove(function(event){
  4.        
  5.         setInterval(function(){
  6.        
  7.           if(event.pageX < menuConteiner.width()){
  8.                  
  9.                 funcHoverButton = setTimeout(function(){
  10.                        
  11.                   divMenu.hover(function(){
  12.                  
  13.                           divButton.fadeIn(350);
  14.                          
  15.                         }, function(){
  16.                                
  17.                           divButton.fadeOut(350);
  18.                          
  19.                   });
  20.                  
  21.                 }, 0);
  22.                
  23.           }else{
  24.                  
  25.                  clearTimeout(funcHoverButton);
  26.                  
  27.           }
  28.          
  29.         }, 1000);
  30.        
  31.  
  32.  });
  33.  
  34.  


Не работает именно так, как я описал.

(Отредактировано автором: 13 Января, 2012 - 20:03:33)

 
 Top
IllusionMH
Отправлено: 13 Января, 2012 - 20:11:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




armancho7777777, возможно проще сделать через специфические функции jQuery
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var flag = false;
  3. $('#divBody').mouseenter(function() {
  4.   setTimeout(/*показать*/, 1000);
  5. }).mouseleave(function() {
  6.   /*очистить таймер
  7.   скрыть дочерний элемент, если показан*/
  8. });
  9.  


Спойлер (Отобразить)

(Отредактировано автором: 13 Января, 2012 - 20:12:27)

 
 Top
armancho7777777 Супермодератор
Отправлено: 13 Января, 2012 - 20:13:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Да нет, не то.
Вы не поняли суть темы.
Мне надо организовать проверку после появления курсоры над элементом divMenu,
находится ли курсор всё ещё над элементом divMenu, по истечению секунды на пример.
divBody мне нужен для того, чтобы было постоянное слежение за координатами курсора.

(Отредактировано автором: 13 Января, 2012 - 20:37:10)

 
 Top
IllusionMH
Отправлено: 13 Января, 2012 - 20:37:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




armancho7777777, ну тогда нужно повесить события на divMenu (ну или какой там обьект нужен?)
CODE (javascript):
скопировать код в буфер обмена
  1. var flag = false;
  2. divMenu.mouseenter(function() {
  3.   flag = true;
  4.   setTimeout(function(){
  5.     if(flag) {
  6.       /*показать дочерний*/
  7.     }
  8.   }, 1000);
  9. }).mouseleave(function() {
  10.   flag = false;
  11.   /*очистить таймер (хотя он уже ничего и не сделает)
  12.   скрыть дочерний элемент, если показан*/
  13. });


Копать стоит в этом направлении
(Добавление)
Флаги можно заменить через
CODE (javascript):
скопировать код в буфер обмена
  1. funcHoverButton = setTimeout(...);
  2. ...
  3. clearTimeout(funcHoverButton);
  4.  

(Добавление)
Т.е. в данном случае по наведению на элемент запускается таймер, ждет 1 секунду и показывает элемент.
Если за это время произошло событие выхода - таймер уже не покажет дочерний.
Если курсор все еще над элементом, то по таймеру покажется дочерний, и скроется когда курсор покинет родителя.
 
 Top
armancho7777777 Супермодератор
Отправлено: 13 Января, 2012 - 20:48:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Блин, час назад так и сделал, но с hover)
Но суть моей ошибки ни в этом:
всё, что мне надо было сделать,
так это добавить флаг, и проверять его)
Дааа... тупанул не простительно)
IllusionMH, дружище, спасибо! Подмигивание
 
 Top
IllusionMH
Отправлено: 13 Января, 2012 - 20:51:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




armancho7777777, не за что Улыбка
Вот пример, где без флагов, а через присвоение/очистку таймера
Потомка специально вывожу сбоку, чтобы показать, что пока курсор на нем, событие mouseleave не сработает
 
 Top
armancho7777777 Супермодератор
Отправлено: 13 Января, 2012 - 20:53:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Ну, короче, я всё крутился вокруг да около))
Спасибо ещё раз, IllusionMH! Превосходно
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB