Удаление элемента из сортируемого материала

Я пытаюсь удалить элемент из сортируемого списка 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);

});

ура

Другие вопросы по тегам