Javascript 脚本效果只发生一次

Javascript 脚本效果只发生一次,javascript,prototypejs,scriptaculous,Javascript,Prototypejs,Scriptaculous,我有一个按钮,使一个div在页面上移动,但我希望该按钮使它只移动一次。如果用户现在继续单击按钮,div将继续朝同一方向移动 如果您能够使用jQuery,那么使用one()方法就很简单: $('yourButtonId').one('click', function(event) { alert('This will only execute once.'); }); 试试看 $('button_id').on('click', functio

我有一个按钮,使一个div在页面上移动,但我希望该按钮使它只移动一次。如果用户现在继续单击按钮,div将继续朝同一方向移动


如果您能够使用jQuery,那么使用
one()
方法就很简单:

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

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

示例

一种简单而通用的方法可能只是设置一个标志

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

正如clockworkgeek的评论所暗示的,有一个标志的一大优势是能够直接操纵和检查状态(框是否已经移动),而无需将其与事件处理逻辑耦合。

它可以工作,但scriptaculous内部真的没有办法这样做吗?它有点违背了使用它的目的,因为使用query可以完全实现相同的效果。这将数据(框可以移动)与逻辑(单击事件)分离。结构化方法必须是最聪明的方法,而不是愚蠢的方法。