Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выдержка Mouseenter (https://javascript.ru/forum/jquery/23167-vyderzhka-mouseenter.html)

shilinpavel 14.11.2011 20:52

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

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

Подскажите пожалуйста, как это реализовать...

trikadin 14.11.2011 21:22

Цитата:

Сообщение от 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>

shilinpavel 14.11.2011 21:29

Спасибо

Pavel M. 14.11.2011 22:05

можно .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>

shilinpavel 14.11.2011 22:19

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

DjDiablo 14.11.2011 23:28

Вот так, сообщение не появится если вы уберёте мышь из области.
При наведении запускается таймер, а если мышь убрать он сбрасывается.
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>

trikadin 15.11.2011 00:17

DjDiablo, а, собственно, зачем вы это второй раз написали?)

DjDiablo 15.11.2011 01:29

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

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

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

trikadin 15.11.2011 01:33

Цитата:

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

Ну вот, кармодрочером меня уже обзывали, теперь и ты в ту же степь)))

Цитата:

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

Ладно, я буду оставлять тебе половину сообщений. :D


Часовой пояс GMT +3, время: 09:22.