Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.12.2014, 14:17
Аватар для darl
Аспирант
Отправить личное сообщение для darl Посмотреть профиль Найти все сообщения от darl
 
Регистрация: 13.09.2012
Сообщений: 38

Выполнение события один раз
Здравствуйте, проблема следующая, событие 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);
    });
Ответить с цитированием
  #2 (permalink)  
Старый 01.12.2014, 14:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

darl,
попробуйте stop(true, true) или обьясните что значит единожды -- ненужна функция так отключите через off
Ответить с цитированием
  #3 (permalink)  
Старый 01.12.2014, 14:34
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

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

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;
        }

    });

второй по аналогии
Ответить с цитированием
  #4 (permalink)  
Старый 01.12.2014, 14:49
Аватар для darl
Аспирант
Отправить личное сообщение для darl Посмотреть профиль Найти все сообщения от darl
 
Регистрация: 13.09.2012
Сообщений: 38

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

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;
        }

    });

второй по аналогии
Все верно, отрабатывает, только при выполнении иной анимации зависает и не отрабатывает.
Ответить с цитированием
  #5 (permalink)  
Старый 01.12.2014, 14:53
Аватар для darl
Аспирант
Отправить личное сообщение для darl Посмотреть профиль Найти все сообщения от darl
 
Регистрация: 13.09.2012
Сообщений: 38

Сообщение от рони Посмотреть сообщение
darl,
обьясните что значит единожды -- ненужна функция так отключите через off
При соблюдении условия анимация отрабатывала только один раз, второй раз, только при последующем соблюдении условия
Ответить с цитированием
  #6 (permalink)  
Старый 02.12.2014, 08:27
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проиграть звук на сайте один раз за сеанс. tuchkovo-auto Общие вопросы Javascript 3 21.05.2014 11:13
Выполнение события 1 раз и снятие события? seyfer Events/DOM/Window 20 22.05.2013 12:14
еще один вопрос про кнопки и события f0rzik Общие вопросы Javascript 15 19.01.2013 23:19
Скрипт правильно работает только один раз, после начинает выдавать ошибку. xodock Events/DOM/Window 2 23.07.2012 13:04
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47