jsTree: предотвращать до и после ТИПА, использовать только внутри - PullRequest
1 голос
/ 15 марта 2010

Я использую jsTree , что очень приятно.При перетаскивании я не особо беспокоюсь о типах «до» и «после», я хочу использовать только внутри.Это означает, что я беспокоюсь только о том родителе, в которого помещен ребенок, а не о том, где находится порядок с другими элементами ВНУТРИ родителя.

Итак, я хотел построить свой обратный вызов, поэтому он всегда ссылается народительский узел, внутри которого он находится.Но это еще не доказательство.

onmove : function (NODE,REF_NODE,TYPE,TREE_OBJ,RB) {
    if (TYPE == 'inside') {
        alert('Item to move:'+$(NODE).attr('rel')+' to '+$(REF_NODE).attr('rel')+' '+TYPE);
    } else if (TYPE == 'after') {
        alert('Item to move:'+$(NODE).attr('rel')+' to '+$(REF_NODE).parent().parent('li').attr('rel')+' '+TYPE);
    }
},

Есть ли у кого-нибудь предложения, как я могу изменить свой обратный вызов, чтобы REF_NODE всегда был родителем, в который перемещается NODE?Вместо того, чтобы братья и сестры, который является дочерью родителя?

Вот пример на jsbin: http://jsbin.com/uroye3/2

При попытке примера перетащите другие папки в папку шаблонов.Вы ДОЛЖНЫ быть предупреждены о том, что вы перемещаете другие папки в папку 4. Но, если вы попробуете по-другому до и после перетаскивания в папку Шаблоны, вы иногда получите неопределенное значение.Таким образом, результаты не всегда, как ожидалось.Как я уже сказал, я всегда хочу знать родительскую папку, в данном случае 4, в которую помещена другая папка.

1 Ответ

2 голосов
/ 30 марта 2010

Взято из jstree FAQ, это может вам помочь

При перемещении или создании узла «внутри» другой узел, обратный вызов REF_NODE не указывает на новый родительский узел. Что делать?

Это не ошибка! Потому что ты можешь создавать узлы в определенной позиции среди детей родительского узла, прохождение только родительского узла не будет быть достаточным. Вот почему вы должны всегда проверьте аргумент TYPE, переданный Обратные вызовы! Если хочешь всегда работать с родительским узлом - добавьте эту строку в верхней части обратных вызовов:

if(TYPE != "inside") { 
  TYPE="inside"; 
  REF_NODE = $(NODE).parents("li:eq(0)").get(0); 
}
...