ソート可能なリストに接続されたdraggablesのリストがあります。ドラッグ&ドロップは、ソートと同様に機能します。問題は、リストがソートされる前に、(レールを使用して)DBにレコードを作成する必要があることです。ですから、$ .postはうまくいきますが、挿入された要素のidを変更する必要があります。これを行うには、$ .postコールバックを使用して挿入された要素のIDを変更します。うまく動作しますが、ソート後に発生します。なぜ私がドラッグ可能なストップコールバックを使用しなかったのか疑問に思っているのなら、それは同じことなのですから。ここでは省略コード(取り外し無関係デシベルのもの)があります:ソート可能なソートの後に呼び出されるJQueryのドラッグ可能なコールバック
$("#operations_container").sortable({items:'.process_small', axis:'y', update: function(ev,ui) {
if (ui.item.attr('id').match("workcenter"))
{
$.post('/operations', 'fancyrailspoststuffignore', function(data) {
$("#operations_container > #workcenter_" + workcenterid).attr("id", "operation_" + data.operation.id);
}, "json");
}
$.post('/jobs/sort/<%= @job.id %>', 'morefancyschamncyrailsjunk);
}});
ソート可能なコンテナは単純です:
<div id="operations_container" class="in_grid">
</div>
だから、すべてのコールバックが後ソートと呼ばれているように私には見えます。これは本当ですか?ソートの前にDOMを更新する必要がある場合、これを回避する方法はありますか?
更新:コメントに紛失した場合は、問題を示す画像とサンプルファイルがあります。
画像:http://dl.getdropbox.com/u/1826667/sortable.png サンプルファイル:http://dl.getdropbox.com/u/1826667/jquery_callback_order.zip
だから、ソート可能な更新がまだ最後に呼び出される前にコールバックは関係なく、常に彼らは(.postコールバック@と呼ばれている場所のいずれかの他のイベントの終わりで終わることが表示されます、など)。私はそれがJQueryで失敗しているとは思わない(私はそれが奇妙だと思うが)。私は、おそらくそれを行う方法ではありませんが、1つの行くにいくつかの投稿(彼らは共同依存しているので、必要ですが、レコードを作成し、並べ替える)をしようとしています。私はバックエンドでそれを回避しようとします(私はほとんど何かが働いているので)、私はこれを閉じたと考えます。この問題を助けてくれた皆様に感謝します。 SOのルール。
MEGAIMPORTANTUPDATE:それは機能しています!ショーンはそれを得た(答えを参照)と私はまだ少しばかげています。このことは数日経っています。みんなと特にShawnに感謝します。あなたは揺れる。
問題が発生しています。 sortablesの順序が変更される前に#workcenter_43を#operation_64に変更したいのですか? –
そうです。しかし、idを変更するコールバックはソート可能な変更の後に呼び出されます。 –
私はそれを正確に行う方法はないと思います。多分私たちは回避策を見つけることができます。それはなぜあなたはそれを並べ替える前に呼び出す必要がありますか? –