从可排序的()获取arrray值

时间:2015-12-05 13:21:19

标签: jquery arrays jquery-ui jquery-ui-sortable

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

我在短列表中使用sortable()并希望返回排序列表的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数组,那么当我稍后尝试将其调用到另一个函数时,该数组是空白的。如果我没有全局声明它,当我尝试调用它时它的错误是未定义的。

我错过了哪些想法?

2 个答案:

答案 0 :(得分:0)

重写每次新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();

});

答案 1 :(得分:0)

我已经解决了这个问题,但是如果有人能够向我解释为什么要这样做,我会感兴趣。

我将代码更改为:

    $('#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调用到我的其他函数中。我不明白为什么我必须这样做,但它的确有效。就目前而言,我认为任何一个数组都不会在任何地方声明。