2014-01-10 4 views
2

У меня есть 2 jstrees, и теперь я пытаюсь реализовать опцию перетаскивания между ними, но мне кажется, что мне не удается получить идентификатор элемента, который я перетаскиваю или идентификатор нового родителя (после перетаскивания). До сих пор это код, который я создал, но в данных, которые я предупреждаю, нет идентификаторов или другой информации, которая мне помогла.Получение элемента id jstree при перетаскивании

$("#tree").jstree({ 


    "dnd" : { 

     "drop_finish" : function(data) { 
      alert(data.toSource()); 
     } 
     }, 
    "plugins" : [ "themes", "html_data", "dnd", "ui", "types" ], 
}); 

Я также создал рабочую Fiddle с 2 деревьев и почти весь мой код.

Если бы кто-нибудь мог дать мне подсказку или идею о том, как я могу решить эту проблему, я был бы очень признателен ей.

ответ

4

Попробуйте это

$("#tree").bind('move_node.jstree', function(e, data) { 
    alert(data.node.id); 
    alert(data.parent); 
    alert(data.old_parent); 
    alert(data.position); 
} 

Theese переменные в значительной степени само за себя.

0

Не используйте «dnd», попробуйте «crrm», как это.

"crrm": { 
     "move": { 
      "always_copy": "multitree",//create a copy node,prevent removing node 
      check_move: function(m) { 
       // use m.ot,m.rt to get the id of the node you are dragging or the node you will drop down. 
      } 
      ,"default_position": "last" 
     } 
    }, 

Перед тем, как вы прочитали документацию jstree. Я потратил больше времени, чтобы изучить его. Попробуйте прочитать документацию, все, что вам нужно, это в ней.

0

Вы можете использовать это,

"check_callback" : function (op, node, par, pos, more) { 
    if ((op === "move_node" || op === "copy_node") && node.type && node.type == "root") { 
     return false; 
    } 
    if ((op === "move_node" || op === "copy_node") && more && more.core && !confirm('Are you sure ...')) { 
     return false; 
    } 
    return true; 
}, 
Смежные вопросы