Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Прервать события JS (https://javascript.ru/forum/jquery/60657-prervat-sobytiya-js.html)

Slays 13.01.2016 09:26

Прервать события JS
 
К примеру у нас есть страница:

gubahasport59.ru/uslugi/obuchenie-kataniu.php

Там есть блок с инструкторами, при наведении на которые всплывает блок с информацией.

Проблема в том, что если мы быстро будем наводить на все блоки, событие встают в очередь и начинается хаос. Блоки начинают беспорядочно двигаться.

Нужно, чтобы при наведении на блок, все прежние события, связанные с данными блоками ПРЕКРАЩАЛИСЬ и всплывал только последний из них.

Как это реализовывается ?

Сейчас код следующий:
$('.instructors .block').mouseenter(function(){
        var $this = $(this),
            $description = $this.find('.description');

        $description.animate({top: 0}, 500, function(){
            $this.mouseleave(function(){
                $description.animate({top: 330 + 'px'}, 500);
            });
        });
    });

рони 13.01.2016 09:40

Slays,
перед animate stop
.stop(true,true).animate

и присваивать mouseleave бесконечно ненадо

рони 13.01.2016 09:54

Slays,
$(".instructors .block").on("mouseenter mouseleave",
 function(event){
         $(".description",this).stop(true,true).animate({top: event.type == "mouseenter" ? 0 : 330}, 500);
    }
)


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