Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выполнение события один раз (https://javascript.ru/forum/jquery/52033-vypolnenie-sobytiya-odin-raz.html)

darl 01.12.2014 14:17

Выполнение события один раз
 
Здравствуйте, проблема следующая, событие mousemove отрабатывает при определенном положении курсора, после этого выполняется анимация, все отрабатывает, но событие постоянно выполняется при соблюдении условия, возникают тормоза, каким образом можно выполнить единожды при соблюдении условия?
$(document).mousemove(function(e){
        var y=e.pageY,s1=$('.service1').children('.service-item-txt');
        if (y>1000&&y<1300)
            s1.stop().animate({top:'0px'},350);

        if (y<1000||y>1300)
            s1.stop().animate({top:'220px'},350);
    });

рони 01.12.2014 14:31

darl,
попробуйте stop(true, true) или обьясните что значит единожды -- ненужна функция так отключите через off

tsigel 01.12.2014 14:34

Сделайте флаг что анимация идет, и не запускайте пока она идет.

var animationActive = false;
$(document).mousemove(function(e){
        var y=e.pageY,s1=$('.service1').children('.service-item-txt');

        if (animationActive)
           return false;

        if (y>1000&&y<1300) {
            s1.stop().animate({top:'0px'},350, function () {
               animationActive = false;
           });
           animationActive = true;
        }

    });

второй по аналогии

darl 01.12.2014 14:49

Цитата:

Сообщение от tsigel (Сообщение 343743)
Сделайте флаг что анимация идет, и не запускайте пока она идет.

var animationActive = false;
$(document).mousemove(function(e){
        var y=e.pageY,s1=$('.service1').children('.service-item-txt');

        if (animationActive)
           return false;

        if (y>1000&&y<1300) {
            s1.stop().animate({top:'0px'},350, function () {
               animationActive = false;
           });
           animationActive = true;
        }

    });

второй по аналогии

Все верно, отрабатывает, только при выполнении иной анимации зависает и не отрабатывает.

darl 01.12.2014 14:53

Цитата:

Сообщение от рони (Сообщение 343742)
darl,
обьясните что значит единожды -- ненужна функция так отключите через off

При соблюдении условия анимация отрабатывала только один раз, второй раз, только при последующем соблюдении условия

tsigel 02.12.2014 08:27

darl,
Чтобы корректно отрабатывала вторая анимация попробуйте параметры в stop как предложил рони


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