我很确定我在这里做了些蠢事,因为这似乎是一个非常基本的问题。
我在短列表中使用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数组,那么当我稍后尝试将其调用到另一个函数时,该数组是空白的。如果我没有全局声明它,当我尝试调用它时它的错误是未定义的。
我错过了哪些想法?
答案 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
调用到我的其他函数中。我不明白为什么我必须这样做,但它的确有效。就目前而言,我认为任何一个数组都不会在任何地方声明。