Не уверен, что я понял весь ваш вопрос, но, в частности, я могу помочь вам с этой частью:
"[...], чтобы проверить, если узел ужесуществует в дереве, чтобы не допустить перемещения "
Вы должны использовать, как вы уже пытались, плагин crrm .Я только что ответил на довольно похожий вопрос , например, возможно, вы захотите взглянуть и на него.
В вашем случае, так как вам нужно проверитьсуществование узла (или нет) в другом дереве, вы можете сделать что-то вроде этого:
"crrm": {
"move": {
"check_move": function(m) {
return (m.ot === m.rt) || !m.rt.get_container().find("li[id="+m.o[0].id+"]").length;
}
}
}
Сначала мы проверяем, перемещаем ли мы узел внутри того же дерева, и всегда разрешаем этот случай (чтобы изменить порядок узловили что угодно).Измените его, если он вам не нужен.
Затем мы проверяем, существует ли узел:
m.o
- это перемещаемый узел.Вы будете искать его в дереве, где вы отбрасываете узел.
m.rt.get_container()
вернет структуру jQuery DOM, поэтому нам просто нужно использовать .find()
и он вернет массив <li>
элементы, найденные по идентификатору, являются пустыми, если ничего не найдено.
Если мы возвращаем TRUE (мы перемещаемся по одному и тому же дереву или массив пустой, то есть узел не найден ввторое дерево), движение разрешено, в противном случае оно запрещено.
Надеюсь, это поможет!