Проверка JSTree выбрана узлами листа или делает только листья выбираемыми

86
6

Я создал jstree следующим образом


$('#js-tree').jstree({
'core' : {
'data' : {
'url' : "${pageContext.request.contextPath}/makeTree",
"plugins" : [ "types", "search"],
'data' : function (node) {
return { 'id' : node.id };
}
}
}
});

Я хочу проверить, выбран ли node лист node при отправке информации -


var selectedLeaves = $("#js-tree").jstree("get_selected");

Но это дает мне только массив id. Как использовать метод is_leaf для фильтрации наших единственных листовых узлов из выбранных узлов?
Я сослался на этот пост -
Заставить пользователя выбирать только листовые узлы
Это решение не сработало для меня.

спросил(а) 2021-01-19T13:27:05+03:00 2 месяца, 3 недели назад
1
Решение
87

Я нашел решение самостоятельно, используя аргумент get_selected api, чтобы отфильтровать листья из папок -


var nodes = $("#js-tree").jstree(true).get_selected("full", true);
$.each(nodes,function(i, node){
if(node.children.length >0){
console.log("not leaf");
}
else{
console.log("leaf");
}
});

Если у вас есть лучшее решение, сообщите мне.

ответил(а) 2021-01-19T13:27:05+03:00 2 месяца, 3 недели назад
44

Вот что сработало для меня


var res = jQuery.jstree.reference('#js-tree').get_json('#', { flat: true });
var cnt = 0;
for (var i = 0, j = res.length; i < j; i++) {
if (res[i].parent !== '#') {
cnt++;
}
}

cnt - это наша команда

ответил(а) 2021-01-19T13:27:05+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема