jQuery可排序代码的行为与我预期的不一样

jQuery可排序代码的行为与我预期的不一样,jquery,Jquery,我使用jQuery允许在两个列表之间进行拖放,但没有得到我所期望的行为 每个列表都有两对ID,分别是集合中的teams\u和集合中的teams\u not\u,类的所有成员都连接了可排序的。页面上将有任意数量的这些配对,最后的集合号为0,表示正在创建的新集合(与正在编辑的现有集合相反) 我正在使用$(文档)中的以下函数进行设置。准备就绪: var teams_in_set_pattern = /^teams_in_set(\d*)$/; $(function() {

我使用jQuery允许在两个列表之间进行拖放,但没有得到我所期望的行为

每个列表都有两对ID,分别是
集合中的teams\u
集合中的teams\u not\u
,类
的所有成员都连接了可排序的
。页面上将有任意数量的这些配对,最后的集合号为0,表示正在创建的新集合(与正在编辑的现有集合相反)

我正在使用
$(文档)中的以下函数进行设置。准备就绪


    var teams_in_set_pattern = /^teams_in_set(\d*)$/;
    $(function() {
        var connected_list = $(".connected-sortable");
        for (var i = 0; i < connected_list.length; i++) {
            var id = connected_list[i].id;
            if (teams_in_set_pattern.test(id)) {
                var set_num = id.match(teams_in_set_pattern)[1];
                var teams_in = "#teams_in_set" + set_num;
                var teams_out = "#teams_not_in_set" + set_num;

                if (set_num > 0) {
                    $(teams_in + ", " + teams_out).sortable({
                        revert: true,
                        connectWith: ".connected-sortable", 
                        cursor: 'move', 
                        receive: function(event, ui) {
                            update_teams(set_num);
                        } 
                    }).disableSelection();
                }
                else {
                    $(teams_in + ", " + teams_out).sortable({
                        revert: true,
                        connectWith: ".connected-sortable", 
                        cursor: 'move', 
                    }).disableSelection();
                }
            }
        }
    });

var teams_in_set_pattern=/^teams_in_set(\d*)$/;
$(函数(){
var connected_list=$(“.connected sortable”);
对于(变量i=0;i0){
$(团队输入+,“+团队输出)。可排序({
回复:对,
connectWith:“.connected sortable”,
光标:“移动”,
接收:功能(事件、用户界面){
更新团队(设置数量);
} 
}).disableSelection();
}
否则{
$(团队输入+,“+团队输出)。可排序({
回复:对,
connectWith:“.connected sortable”,
光标:“移动”,
}).disableSelection();
}
}
}
});
其思想是当团队从一个列表移动到另一个列表时,
更新团队(set_num)行,触发一些更新数据库的Ajax。问题在于变量
set_num
;它似乎没有保留填充
receive:
时的值,而是具有上次设置的值,该值始终为0


我误解了什么?我需要做什么才能获得我想要的行为?

这是异步Javascript中的一个常见问题。当更新团队运行时,循环已经运行

见类似问题:

我通常将问题代码移动到它自己的函数中,例如

function doIt(teams_in, teams_out, set_num) {
   if (set_num > 0) {
                $(teams_in + ", " + teams_out).sortable({
                    revert: true,
                    connectWith: ".connected-sortable", 
                    cursor: 'move', 
                    receive: function(event, ui) {
                        update_teams(set_num);
                    } 
                }).disableSelection();
            }
    else {
                $(teams_in + ", " + teams_out).sortable({
                    revert: true,
                    connectWith: ".connected-sortable", 
                    cursor: 'move', 
                }).disableSelection();
    }
}

你链接到的问题真的很有帮助。非常感谢你!