Остановить события после их запуска - PullRequest
1 голос
/ 29 июня 2009

У меня есть следующий код:

$('body').mousemove(function() {
    $('#covering').fadeOut(500);
    $('.block div div').fadeOut(250)
    $('.block div div').css('margin-top','160px')
    $('.block div div').fadeIn(250);
});

В основном то, что я пытаюсь сделать, это иметь "скрывающий" div, исчезающий (как в этот вопрос ) и внутренний блок нескольких элементов блеска исчезает, перемещается тихо и снова исчезает для бесшовного эффекта.

Однако, когда это выполняется, каждый раз, когда перемещается мышь, запускается все вышеперечисленное. Это создает проблему, так как это не то, чего я хочу (я хочу, чтобы это случилось один раз, и все), и я предполагаю, что это замедляет работу браузера, что может привести к увеличению производительности.

Мне кажется, я где-то читал, как остановить выполнение чего-либо, как только оно выполнится один раз, но я не могу вспомнить, так есть ли способ сделать это? Благодаря.

Ответы [ 2 ]

9 голосов
/ 29 июня 2009
$('body').one('mousemove', function() {
        $('#covering').fadeOut(500);
        $('.block div div').fadeOut(250)
        $('.block div div').css('margin-top','160px')
        $('.block div div').fadeIn(250);
});

Подробнее: http://docs.jquery.com/Events/one

1 голос
/ 29 июня 2009

Попробуйте One Событие . Как указано, он имеет следующую функцию:

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

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

$('body').one("mousemove", function() {
    $('#covering').fadeOut(500);
    $('.block div div').fadeOut(250)
    $('.block div div').css('margin-top','160px')
    $('.block div div').fadeIn(250);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...