从mootools中删除元素可排序

时间:2012-01-13 21:09:30

标签: javascript mootools mootools-sortable

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

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

请注意order1order2个变种。这样可以在删除项目之前和之后保存序列化元素。如果您在从sortable中删除元素后使用destroy方法删除元素,则可以获得order2的正确值,例如。 4.

如果您使用nix(true)代替destroy,则order1order2的值为5,即使文档说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 个答案:

答案 0 :(得分:0)

我认为你不会发现会破坏元素的任何效果或方法仍然会在页面上显示;)所以它不是moo工具bug

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

});

干杯