Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Алгоритм задержки для событий. (https://javascript.ru/forum/jquery/18992-algoritm-zaderzhki-dlya-sobytijj.html)

HelloO 22.07.2011 12:48

Алгоритм задержки для событий.
 
Для событий типа hover и тп.. необходимо сделать задержку перед выводом по принципу title у ссылок..
Тоесть при наведении и остановке курсора на N времени на объекте - делать экшн...

ну или вот на примере:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.min.js?ver=3.1.3"></script>
</head>

<body>

<script type="text/javascript">
$(document).ready(function(){
    $('#chan').css({backgroundColor:"red"});
    $('#chan').mouseover(function(){
        $('#chan').delay(1000);
        $('#chan').animate({opacity:0.5, height:"400px"}, 250); 
         
    });
    $('#chan').mouseout(function(){
        $('#chan').animate({opacity:1, height:"700px"}, 250);  
    });
 
});
</script>
<div id="chan" style="width:700px; height:700px; margin:0 auto; border:5px black solid; cursor:pointer;"></div>

Если бысро навести и убрать курсор.. то экшн произойдет через указанный делай.. а надо чтобы было нечто вроде проверки, чтобы спустя данный делай курсор был в области, иначе экшн не проводить..

Как это реализовать?! Через какие функции приблизительно?!

walik 22.07.2011 14:24

Используйте тайм-аут к примеру. При наведение мыши через timeout вызываете функцию. При mouseout очищаете таймаут.

HelloO 22.07.2011 15:01

О.. спасиб.. поробую)..
Нее.. я думаю не поможет.. толку очищать таймаут?! в таком случае функция будет вызываться сразу.. хмм...

Еще раз повторюсь.. на всякий... проблема в том чтобы событие не выполнялось раньше времени и мышь не должна покидать объект в течении этого времени..
иначе - ничего не делать...

Yuketsu 22.07.2011 15:59

Тайна разгадана)) Лови своё решение)))


<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.min.js?ver=3.1.3"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#chan').css({backgroundColor:"red"});
$("#chan").hover( function () {
$(this).data('timeout', setTimeout( function () {
$('#chan').animate({opacity:0.5, height:"400px"}, 250);}, 1000));
}, function () {clearTimeout($(this).data('timeout'));});
$('#chan').mouseout(function(){
$('#chan').animate({opacity:1, height:"700px"}, 250);
});
});
</script>
<div id="chan" style="width:700px; height:700px; margin:0 auto; border:5px black solid; cursor:pointer;"></div>

HelloO 22.07.2011 16:00

Спасибо)! Оно самое)..


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