ie8では、ソート可能なリストですべてが正常に機能しています。ただし、ie7 で問題が発生しています。
マイページは、社員ごとにテーブルを設けています。割り当てる必要があるジョブのリストがあり、これらのジョブの行を従業員テーブルにドラッグ アンド ドロップします。
最初は、すでに空の従業員テーブルにドロップできないという問題に苦しんでいましたが、各テーブルに .dontinclude 行を組み合わせて使用し、受信関数を追加することでこの問題を回避しました (以下を参照)。
jQuery_1_9_1(function() {
jQuery_1_9_1('[id$="' + tname + '"] ').sortable({
items: "tr:not(.dontinclude)",
connectWith: ".connectedSortable ",
receive: function(ev, ui) {
//debugger;
ui.item.parent().find('tbody').append(ui.item);
}
}).disableSelection();
});
テーブルを作成するときに .dontinclude 行を追加します (宣言ではなく動的に構築されます)。これは、テーブルの最初の行であることを意味します。追加する前に
:not(.dontinclude)
行は空のテーブルに追加されません。その行を追加した後、それらはテーブルに追加されますが、tbody タグの後に追加されてしまい、役に立ちませんでした。receive 関数を追加すると、受信後に追加する場所が指定されます。これは、要素が tbody 内に表示されるようになったことを意味します。
SO、一部のユーザーがie7を使用していることがわかるまで、すべてがie8で正常に機能していました。ドラッグアンドドロップの途中で誤って行を手放すまで、すべてが順調に進んでいましたが、ソート可能なテーブルの1つではありませんでした。結果、完全に消えました。DOM ページを確認したところ、行が再びtbody の外側に追加されていました (おそらく ie7 では行が消えてしまいます)。receive 関数内にデバッガーを配置すると、このインスタンスでは関数が呼び出されないことがわかります。並べ替え可能なテーブル上にいるときにのみ呼び出されます。
したがって、アイテムがソート可能な領域の外にドロップされたときに呼び出される動作を見つけて、おそらくそれをオーバーライドする必要があると思います。
これは可能ですか?多分jquery droppableと関係がありますか?