JavaScript Prototype可拖动

时间:2011-06-13 17:28:18

标签: javascript prototypejs

使用原型我每次移动对象时都试图将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)
      ];
   }
});

我只能在第一次移动时增加20px,但随后它会增加1px。感谢

1 个答案:

答案 0 :(得分:2)

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