Удаление элемента из сортируемого материала
Я пытаюсь удалить элемент из сортируемого списка mootools, затем сериализовать и сохранить новый список.
Я хотел бы использовать немного глазного леденца, а не прямой destroy()
на элементе. Я построил скрипку здесь: http://jsfiddle.net/kBAqJ/4/
Обратите внимание order1
а также order2
вары. Это содержит сериализованный элемент до и после удаления элемента. Если вы используете destroy
Метод избавления от элемента после удаления его из сортируемого, вы получите правильное значение для order2
например 4.
Если вы используете nix(true)
вместо destroy
, вы получите 5 в качестве значения order1
а также order2
хотя в документах сказано, что nix(true)
звонки destroy
после dissolve
,
Это ошибка в Mootools, или я что-то упустил? Есть ли другой способ добавить dissolve
эффект при использовании destroy
что получит правильный результат?
window.addEvent('domready', function(){
var mySort = new Sortables('#example2 UL', {
clone: true,
revert: true,
opacity: 0.7
});
console.log (mySort.elements.length);
var order1 = mySort.serialize(0);
console.dir(order1);
mySort.removeItems($('item1')).destroy(); // this results in the correct value in the order2 var below
//mySort.removeItems($('item1')).nix({duration: 1000}, true); // this results in the wrong value for order2
console.log (mySort.elements.length);
var order2 = mySort.serialize(0);
console.dir(order2);
});
1 ответ
Я не думаю, что вы найдете какой-либо эффект или способ, который уничтожит элемент и все равно покажет его на странице;) Так что это не ошибка moo tools
Функция сериализации использует дочерние элементы списка (т.е. <li>
блоки), чтобы сделать массив.
Я бы сказал, что самым простым способом было бы избавиться от их ссылки в сериализованном массиве:
window.addEvent('domready', function(){
var mySort = new Sortables('#example2 UL', {
clone: true,
revert: true,
opacity: 0.7
});
console.log (mySort.elements.length);
var order1 = mySort.serialize(0);
console.dir(order1);
//mySort.removeItems($('item1')).destroy(); // this results in the correct value in the order2 var below
mySort.removeItems($('item1')).nix({duration: 1000}, true); // this results in the wrong value for order2
console.log (mySort.elements.length);
var order2 = mySort.serialize(0).erase("item1"); // we have to erase the item because he may still be in the list of children at this time…
console.dir(order2);
});
ура