【问题标题】:Storing Sortables in localStorage在 localStorage 中存储 Sortables
【发布时间】:2013-06-03 20:37:40
【问题描述】:

http://jsfiddle.net/2H2rx/

无法保留对可排序列表中最后一项的更改。

$( "#sortable" ).sortable();
$( "#sortable" ).on("sortupdate",function( event, ui ) {
      var sorted = $( this ).sortable( "serialize");
      console.log(sorted);
      localStorage.setItem('sorted', sorted) ;

});

if(localStorage.getItem("sorted") !== null){
  var arrValuesForOrder = localStorage.getItem('sorted').substring(6).split("&div[]="); 

  var $ul = $("#sortable");
  $items = $("#sortable").children();

// loop backwards so you can just prepend elements in the list
// instead of trying to place them at a specific position
  for (var i = arrValuesForOrder[arrValuesForOrder.length - 1]; i >= 0; i--) {
    // index is zero-based to you have to remove one from the values in your array
    $ul.prepend( $items.get((arrValuesForOrder[i] - 1)));
  }
}

$( "#sortable" ).disableSelection();

我正在尝试编写一种将可排序对象存储在本地存储中的方法。我遇到了一些麻烦,似乎取决于最后一项,并且在几次之后间歇性地发生。有什么东西在破坏它?几次后它不会加载对最后一项的更改,或者会任意重新排序它们。我说不出来。要复制,您必须加载链接,重新排序几次,运行几次,再重新排序。它最终不会保留对最后一项的更改,至少在 Chrome 27.0.1453.110 m 中。没有检查其他浏览器。

我看到很多其他问题都在问与此类似的问题,但我现在实际上有一个半可行的解决方案,只是在调试时遇到了麻烦。

编辑:似乎错误发生在 #1、2 或 3 位于最终位置时。也许不是规则,但这是我复制它的一种更简单的方法。

【问题讨论】:

    标签: jquery jquery-ui local-storage


    【解决方案1】:

    您的 for 循环使用的是起始索引值之一,而不是数组的实际长度,正确的 for 循环头应如下所示。

    for (var i = arrValuesForOrder.length - 1; i >= 0; i--) {
    

    【讨论】:

    • 做到了。非常感谢!
    猜你喜欢
    • 2013-02-09
    • 2012-11-13
    • 2012-03-17
    • 1970-01-01
    • 2011-10-04
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    相关资源
    最近更新 更多