从 sortable() 中获取 toArray 值

Getting toArray value out of sortable()

我很确定我在这里做了一些愚蠢的事情,因为这似乎是一个非常基本的问题。

我在短列表上使用 sortable() 并希望 return 排序列表的 ID 数组。我的代码有效,我可以从函数内执行 console.log 以正确显示排序的 ID。但是,我一辈子都想不出如何让这个数组供全球使用。

这是我的代码:

  $(function() {
    var sortedGrades = [];
    $('#sortable').sortable({
        //connectWith: '.sortable-list',
        update: function(event, ui) {
            var sortedGrades = $(this).sortable('toArray');

            console.log(sortedGrades);

        },
        create: function( event, ui ) {
            var sortedGrades = $(this).sortable('toArray');

            console.log(sortedGrades);
        }

    });

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

});

如果我使用 sortedGrades = [] ; 全局声明 sortedGrades 数组,当我稍后尝试将它调用到另一个函数时,该数组是空白的。如果我不全局声明它,当我尝试调用它时它会报错为未定义。

有什么我遗漏的想法吗?

重写您每次重新声明的 var 关键字一个新的 sortedGrades 变量,该变量仅在您声明它的函数内可见。

试试:

$(function() {

    var sortedGrades = [];

    $('#sortable').sortable({
        //connectWith: '.sortable-list',
        update: function(event, ui) {
            sortedGrades = $(this).sortable('toArray');
            console.log(sortedGrades);
        },
        create: function( event, ui ) {
            sortedGrades = $(this).sortable('toArray');
            console.log(sortedGrades);
       }
    });

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

});

我已经修复了它,不过如果有人能向我解释为什么这样做有效,我会很感兴趣。

我将代码更改为:

    $('#sortable').sortable({

        update: function(event, ui) {
            sortedGrades = $(this).sortable('toArray');
            sortedGrades2 = sortedGrades ;
            console.log(sortedGrades);
        },
        create: function( event, ui ) {
            sortedGrades = $(this).sortable('toArray');
            sortedGrades2 = sortedGrades ;
            console.log(sortedGrades);
        }

    });

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


  });

});

(即我添加了 sortedGrades2 = sortedGrades; 行)

然后我将 sortedGrades2 调用到我的另一个函数中。我不明白为什么我必须这样做,但它有效。就目前而言,我认为这两个数组实际上都没有在任何地方声明。