Я обнаружил довольно странное поведение jquery. У меня есть два списка здесь, где я перетаскиваю li-элементы из одного в другой, текущие сортировки сохраняются с помощью ajax-mysql. Сегодня днем я заметил, что иногда, просто иногда позиция последнего отброшенного элемента не сохранялась должным образом, она сохранялась как «0», когда это должно быть, например, 4 или 5. Мне потребовалось несколько часов, чтобы выяснить, что такое поведение прямое отношение к предупреждению, которое срабатывает после падения предмета:
alert(data); <---- data is the current sorting of the ids
Если я удаляю эту строку, появляется описанное выше странное поведение сценария. Может быть, кто-то испытывал что-то подобное раньше и может поделиться некоторыми советами?
привет, Мащек
edit: эта функция содержит предупреждение:
$(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();
Но описанное неправильное поведение все еще происходит. Может кто-нибудь сказать мне, если использование этой дополнительной функции обратного вызова является правильным подходом? Или как еще я должен справиться с этим, чтобы обеспечить правильную переменную? спасибо за ваши советы ...