私はいくつかのjsonが取り込まれたfancytreeを持っています。ドロップ可能なdivもあります。ツリー内でノードをドラッグできるようにしたい (つまり、含まれている階層内で物を移動できるようにしたい)、ツリーから外部のドロップ可能な div に物をドラッグできるようにしたい。
これどうやってするの?
ここに私が持っているものがあります:
私のHTML:
<div id="tree"></div>
<div id="droppable">
stuff
</div>
dnd 初期化オプション:
{
autoExpandMS: 400,
focusOnClick: true,
preventVoidMoves: true, // Prevent dropping nodes 'before self', etc.
preventRecursiveMoves: true, // Prevent dropping nodes on own descendants
dragStart: function(node, data) {return true;},
dragEnter: function(node, data) {return true;},
dragDrop: function(node, data) {data.otherNode.moveTo(node, data.hitMode);},
draggable: {
containment: 'document',
scroll : false,
scrollSpeed: 7,
scrollSensitivity: 10,
}
},
ドロップ可能な初期化
$('#droppable').droppable({
onDrop : function(e,source){
alert('dropped: '+source.textContent);
window.dropped = source;
window.event = e;
},
});
拡張子:
["dnd","edit","contextMenu"] 拡張機能を利用しています。私が気付いていない競合がある場合に備えて、これについて言及しています...ただし、編集とコンテキストメニューを無効にしましたが、役に立ちませんでした。
行動:
- contextMenu と edit 拡張機能は正常に機能します。
- ツリー内で項目をドラッグ アンド ドロップして、ノードを並べ替えることができます。
- ツリーからドラッグできません
- ツリーで
scroll: true
は、端をドラッグすると無限にスクロールするスクロールバーがいくつか取得されます - ツリーのスクロールバーは同じように動作し
scroll: false
ますが、実際のスクロールは発生しません - 封じ込めは効果がないようです
- ツリーで
含まれるリソース:
- jquery.js jquery-ui-1.11.0.js
- jquery.fancytree-all.css
- jquery.contextMenu.css
- jquery.contextMenu-1.6.5.js
- jquery.fancytree.contextMenu.js
- fancytree.min.css