0

我正在尝试从 mootools 可排序列表中删除一个项目,然后序列化并保存新列表。

destroy()我想在元素上使用一点眼睛糖果而不是直接。我在这里建了一个小提琴:http: //jsfiddle.net/kBAqJ/4/

注意order1order2vars。这包含删除项目之前和之后的序列化元素。如果您destroy在从可排序元素中删除元素后使用该方法删除元素,您将获得正确的值order2,例如。4.

如果你使用nix(true)而不是destroy,你会得到 5 作为 and 的值order1order2即使文档说在之后nix(true)调用。destroydissolve

这是 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);

});
4

1 回答 1

0

我认为您不会找到任何会破坏元素并仍将其显示在页面上的效果或方式;)因此,这不是 moo 工具错误

serialize 函数使用列表的子项(即<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);

});

干杯

于 2012-01-16T16:06:01.440 回答