0

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と関係がありますか?

4

1 に答える 1

0

OK、私はこれの一番下に着きました。

最初は物事を複雑にしすぎたようです。

受信機能を使用する必要はありませんでした。

jQuery_1_9_1(function() {
            jQuery_1_9_1('[id$="' + tname + '"] tbody ').sortable({
                items: "tr:not(.dontinclude)",
                connectWith: ".connectedSortable tbody"
            }).disableSelection();
        });

セレクターと connectWith で tbody を指定するだけで済みました。これは、.dontinclude 行 (私のテーブルでは、これは単なるテーブル ヘッダー行です) を持つことに加えて、問題を解決し、値がtbody タグ内に追加されるようにします。

EDITまた、「tname」IDとクラス「sortable」がテーブルタグで指定されていることも追加する必要があります。

于 2013-03-15T10:22:36.080 に答える