JavaScript原型可拖动

JavaScript原型可拖动,javascript,prototypejs,Javascript,Prototypejs,使用prototype,我试图在每次移动对象时将X和Y增加20px。我可以这样做: new Draggable('element', {snap:[20, 20]}); 但是,它也会起作用,我还需要使用以下命令约束拖动到元素的父节点: new Draggable('element', { snap: function(x, y, draggable) { function constrain(n, lower, upper) { if (n > upp

使用prototype,我试图在每次移动对象时将X和Y增加20px。我可以这样做:

new Draggable('element', {snap:[20, 20]});
但是,它也会起作用,我还需要使用以下命令约束拖动到元素的父节点:

new Draggable('element', {
   snap: function(x, y, draggable) {
      function constrain(n, lower, upper) {
         if (n > upper) return upper;
         else if (n < lower) return lower;
         else return n;
      }
      var element = draggable.element.getDimensions( );
      var parent = draggable.element.parentNode.getDimensions( );
      return [
         constrain((x + 20), 0, parent.width - element.width),
         constrain((y + 20), 0, parent.height - element.height)
      ];
   }
});
newdraggable('element'{
捕捉:功能(x、y、可拖动){
函数约束(n、下、上){
如果(n>上限)返回上限;
否则,如果(n<较低)返回较低值;
否则返回n;
}
var element=draggable.element.getDimensions();
var parent=draggable.element.parentNode.getDimensions();
返回[
约束((x+20),0,parent.width-element.width),
约束((y+20),0,parent.height-element.height)
];
}
});
我只能在第一次移动时增加20px,但之后会增加1px。谢谢

return [
    constrain(Math.round(x/20)*20, 0, parent.width - element.width),
    constrain(Math.round(y/20)*20, 0, parent.height - element.height)
];