Сценарийный эффект возникает один раз - PullRequest
2 голосов
/ 25 января 2012

У меня есть кнопка, которая заставляет div перемещаться на странице, но я хочу, чтобы кнопка делала это только один раз.Если пользователь продолжает нажимать кнопку прямо сейчас, div продолжает двигаться в том же направлении.

Ответы [ 3 ]

1 голос
/ 25 января 2012

Простой и общий способ может быть просто установить флаг.

var box_can_move = true;
$('button_id').on('click', function(event, element){
    if(box_can_move){
        box_can_move = false;
        //move box;
    }
});

Как отмечается в комментарии ClockworkGeek, большое преимущество наличия флага заключается в возможности манипулировать и проверять состояние (илиполе уже перемещено или нет) напрямую, без связи с логикой обработки событий.

0 голосов
/ 25 января 2012

попробуйте

  $('button_id').on('click', function(event, element){
   new Effect.Move('div', {x: 300});
   element.stopObserving();
  });

пример http://jsfiddle.net/pJ9cf/

0 голосов
/ 25 января 2012

Если у вас есть возможность использовать jQuery, это просто с помощью метода one():

$('yourButtonId').one('click', 
    function(event) 
    { 
        alert('This will only execute once.'); 
    });
...