撤消/重做从DOM中删除元素

时间:2013-12-02 23:06:22

标签: javascript jquery

我有一个应用程序,用户可以在其中绘制元素,删除它们,移动它们,调整它们等等。我希望能够在我的应用程序中撤消/重做几乎每一个动作,而无需刷新页面。

因此,例如,当我通过按退格键移除元素时,我希望能够通过按'CMD + Z'撤消该操作,并按'CMD + Shift + Z'重做它。

JS

// Remove selected element
$(window).keydown(function(e) {
  if (e.keyCode == 8) {
      $(".ui-selected").remove();
      return false;
  }
});

我需要一个解决方案,我可以重复使用我的应用中的几乎所有操作。我不确定这是否会通知解决方案,但我将所有这些更改存储在jStorage的本地存储中。

1 个答案:

答案 0 :(得分:1)

大部分时间都是使用命令模式完成的,其中对于每个“do”命令,“undo”命令存储在一个数组中,并且向后和向前遍历会调用这些命令。

http://jsperf.com/undo-redo有一个带有性能基准的撤消脚本列表。当我写https://github.com/ArthurClemens/Javascript-Undo-Manager时,我没有使用任何这些,因为我有自己的痒一会儿。