jQuery を使用して 2 つのリスト間でドラッグ アンド ドロップできるようにしていますが、期待どおりの動作が得られません。
各リストは、クラスのすべてのメンバーである IDteams_in_set<set-number>
との 2 つのペアで提供されます。これらのペアリングはページ上に任意の数あり、最後にセット番号 0 があり、(既存のセットが編集されているのではなく) 新しいセットが作成されていることを表します。teams_not_in_set<set-number>
connected-sortable
で次の関数を使用して設定しています$(document).ready
。
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();
}
}
}
});
チームが 1 つのリストから別のリストに移動すると、そのupdate_teams(set_num);
行が呼び出され、データベースを更新する Ajax がトリガーされるという考え方です。問題は変数set_num
です。設定されたときの値を保持するのではなく、receive:
最後に設定された値を保持しているように見えますが、これは常に 0 になります。
私は何を誤解していますか?そして、私が望む行動を得るために何をする必要がありますか?