【问题标题】:Getting toArray value out of sortable()从 sortable() 中获取 toArray 值
【发布时间】:2016-03-10 09:23:30
【问题描述】:

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

我在一个短列表上使用 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 数组,则当我稍后尝试将其调用到另一个函数中时,该数组是空白的。如果我没有全局声明它,当我尝试调用它时它会报错为未定义。

有什么我错过的想法吗?

【问题讨论】:

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


    【解决方案1】:

    重写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();
    
    });
    

    【讨论】:

    • 谢谢。如果这样做,当我在函数 gradeSort(type, sortedGrades) ; 中调用 sortedGrades 时,它仍然是未定义的。或者,如果我将 var sortedGrades = []; 放在 document.ready 上,则数组将作为空发送到gradeSort 函数。
    【解决方案2】:

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

    我把代码改成:

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

    【讨论】:

      猜你喜欢
      • 2016-10-27
      • 2021-04-01
      • 2015-06-18
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      相关资源
      最近更新 更多