0

mootools の並べ替え可能なリストから項目を削除してから、新しいリストをシリアル化して保存しようとしています。

destroy()要素をまっすぐにするのではなく、少し目を楽しませたいと思います。ここにフィドルを作成しました:http://jsfiddle.net/kBAqJ/4/

order1およびorder2varsに注意してください。これは、アイテムを削除する前後のシリアル化された要素を保持します。destroyソート可能から要素を削除した後にメソッドを使用して要素を削除するとorder2、たとえば の正しい値が得られます。4.

nix(true)の代わりに使用すると、 anddestroyの値として 5 が得られますが、ドキュメントではafterを呼び出すと書かれています。order1order2nix(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 に答える