私はjqueryのかなり奇妙な振る舞いを発見しました。ここに2つのリストがあり、li要素を1つから別の要素にドラッグアンドドロップすると、現在の並べ替えがajax-mysqlによって保存されます。今日の午後、最後にドロップしたアイテムの位置が適切に保存されないことがあり、たとえば4または5の場合は、「0」として保存されることがありました。この動作がアイテムのドロップ後にトリガーされるアラートとの直接的な関係:
alert(data); <---- data is the current sorting of the ids
この行を削除すると、上記のスクリプトの奇妙な動作が表示されます。たぶん誰かが以前にこのようなことを経験していて、アドバイスを共有することができますか?
挨拶、マシェク
編集:これはアラートを含む関数です:
$(function() {
$("#sortable2").sortable({
items: \'li:not(.col_header)\',
connectWith: \'#sortable2, #sortable1, #sortable1b, #sortable1c\',
helper: \'clone\',
placeholder: \'empfaenger-highlight\',
revert: \'invalid\',
update: function() {
var data = $(this).sortable("serialize") + \'&user='.$user.'\';
alert(data);
var order = $(this).sortable("serialize") +
\'&action=updateList&user='.$user.'\';
$.post("index.php?eID=moveitems", order,
function(theResponse){
$("#response").html(theResponse);
$("#response").slideDown(\'slow\');
slideout();
});
}
}).disableSelection();
変数が完全にロードされていることを確認するために、コールバックを使用しようとしました。
$(function() {
$("#sortable2").sortable({
items: \'li:not(.col_header)\',
connectWith: \'#sortable2, #sortable1, #sortable1b, #sortable1c\',
helper: \'clone\',
placeholder: \'empfaenger-highlight\',
revert: \'invalid\',
update: function() {
var data = $(this).sortable("serialize");
function doSomething(data) {
};
//alert(data);
var order = data + \'&action=updateList&feuser='.$user.'\';
$.post("index.php?eID=moveitems", order, function(theResponse){
});
}
}).disableSelection();
しかし、記述された誤動作は依然として発生します。この追加のコールバック関数の使用が正しいアプローチであるかどうか、誰かに教えてもらえますか?または、適切に可変にするために、他にどのようにこれを処理する必要がありますか?アドバイスありがとうございます...