私は isAllowed 条件でnestedSortableを使用しています:
$('ol.nestedSortable').nestedSortable({
forcePlaceholderSize: true,
handle: 'div',
helper: 'clone',
connectWith: 'ol.item-tree', //!
items: 'li',
opacity: .6,
placeholder: 'placeholder',
revert: 250,
tabSize: 25,
tolerance: 'pointer',
toleranceElement: '> div',
maxLevels: 0,
isTree: true,
expandOnHover: 700,
startCollapsed: true,
isAllowed: function (item, parent) {
if (!parent.attr('accepttypes')) {
return true;
}
if (parent.attr('accepttypes') == "none") {
return false;
}
if (parent.attr('accepttypes').indexOf(item.attr('type')) >= 0) {
return true;
}
return false;
},
....
isAllowed は単一のツリー内でのみ機能します。別のツリー (connectWith で定義) にドラッグすると、条件が満たされていない場合でも、Li をツリーのルート (および他のいくつかの場所) にドロップできます。条件も満たしています。