Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2011, 20:52
Аспирант
Отправить личное сообщение для shilinpavel Посмотреть профиль Найти все сообщения от shilinpavel
 
Регистрация: 06.09.2011
Сообщений: 73

Выдержка Mouseenter
Есть такая функция
$('#assessment').live("mouseenter", function()
{
     $('.labels_hint').animate({ opacity: "toggle" }, 500);
});

т.е когда наводим мышь на "assessment" появляется "labels_hint".
Проблема в том что это происходит сразу как только наведешь мышь, а мне нужно так чтобы функция выполнялась только когда подержишь мышь на "assessment" 5 секунд. setTimeout() в этом случая как я понимаю не подходит.

Подскажите пожалуйста, как это реализовать...
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2011, 21:22
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от shilinpavel
setTimeout() в этом случая как я понимаю не подходит.
Почему же?

<div id="el1">Текст<span id="el2" style="visibility: hidden; float: right;">Исчезающий текст</span></div>
<script>
div= document.getElementById("el1");
span= document.getElementById("el2");
interv= false;

div.onmouseover= function(){
 interv= setTimeout(function(){span.style.visibility=""; interv= false}, 1000);
};

div.onmouseout= function(){
 if (interv !== false)
  clearTimeout(interv)
 else {
  span.style.visibility="hidden";
 }
};
</script>
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)

Последний раз редактировалось trikadin, 15.11.2011 в 00:16.
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2011, 21:29
Аспирант
Отправить личное сообщение для shilinpavel Посмотреть профиль Найти все сообщения от shilinpavel
 
Регистрация: 06.09.2011
Сообщений: 73

Спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2011, 22:05
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

можно .delay() использовать

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>test</title>
  
  <script type='text/javascript' src='http://code.jquery.com/jquery-git.js'></script>
  
<script>

$(function(){
  var lh = $('.labels_hint');
  $('#assessment').hover(function () {
     lh.stop(true).delay(5000).animate({opacity: 1}, 500);
  },
  function () {
     lh.stop(true).animate({opacity: 0}, 500);
  });
}); 

</script>

</head>
<body>

  <div id="assessment">здесь держим мышь 5 секунд</div>
  <div class="labels_hint" style="opacity:0">labels hint</div>
  
</body>
</html>

Последний раз редактировалось Pavel M., 14.11.2011 в 22:07.
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2011, 22:19
Аспирант
Отправить личное сообщение для shilinpavel Посмотреть профиль Найти все сообщения от shilinpavel
 
Регистрация: 06.09.2011
Сообщений: 73

Вообще то немного не то, функция все равно выполняется если я наведу мышь и быстро уберу с объекта, а мне нужно только когда некоторое время держишь мышь непосредственно на нем.

Последний раз редактировалось shilinpavel, 14.11.2011 в 22:23.
Ответить с цитированием
  #6 (permalink)  
Старый 14.11.2011, 23:28
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Вот так, сообщение не появится если вы уберёте мышь из области.
При наведении запускается таймер, а если мышь убрать он сбрасывается.
setTimeout - для вашего случая идеальный вариант, просто использовать его надо в паре с clearTimeout.

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#box {
	width: 100px;
	height: 100px;
	background-color: orange;
}
</style>

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js' type='text/javascript'></script> 
</head>

<body>
<div id="box"> Наведите на меня, и подождите 5 секунд. </div>

<script type="text/javascript">
var tout;
$(document).ready(function(){

 // обработка при наведении
 // $('#box').mouseenter(function(){  //mouseenter тоже работает
 $('#box').mouseover(function(){

       //создаём таймер который ждёт 5 секунд и запускает ваш метод   
      tout=setTimeout(function(){

             // здесь расположена вся ваша логика
             // которая запускается в случае если пользователь держит указатель 5 секунд.
             alert("Вы продержали 5 секунд");
      },5000); 
 }) 

 // обработка в случае если мышь выводится из области
.mouseout(function(e){

       //унечтожаем таймер, дабы он не выполнил действие по истечению 5 секунд
       clearTimeout(tout)
 })

});

</script>

</body>
</html>
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 14.11.2011 в 23:46.
Ответить с цитированием
  #7 (permalink)  
Старый 15.11.2011, 00:17
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

DjDiablo, а, собственно, зачем вы это второй раз написали?)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 15.11.2011, 01:29
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Да ё-моё.
Я последний ответ посмотрел, а предыдущие нет.

А ты вообще в каждой бочке затычка
Только зайду на форум, а трикадин уже везде отметился. У меня уже дефицит общения начинается

У меня даже есть теория на этот счёт.
Когда на форуме появляется новый вопрос, у тебя в комнате завывает сирена, ты бросаешь всё на свете и бежишь отвечать.
А когда приползаю я, весь урожай общественного признания уже собран.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 15.11.2011 в 01:34.
Ответить с цитированием
  #9 (permalink)  
Старый 15.11.2011, 01:33
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от DjDiablo
Когда на форуме появляется новый вопрос, у тебя в комнате завывает сирена, ты бросаешь всё на свете и бегом бежишь отвечать. Когда наконец приползаю я, ты уже собрал весь урожай общественного признания.
Ну вот, кармодрочером меня уже обзывали, теперь и ты в ту же степь)))

Сообщение от DjDiablo
Только зайду на форум, а трикадин уже везде отметился. У меня уже дефицит общения начинается
Ладно, я буду оставлять тебе половину сообщений.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
События mouseEnter и mouseLeave SlavaMvv Элементы интерфейса 3 15.03.2011 19:44
Помогите реализовать scale по mouseenter WildMaN jQuery 5 06.11.2008 09:51