#jquery #jstree
#jquery #jstree
Вопрос:
как я могу открывать / закрывать узлы двойным или одинарным щелчком по имени узла? Похоже, что это работает здесь, в первом примере дерева, но там используется jsTree 0.9.8
- Используя jsTree 1.0rc2
—
<html>
<head>
<title> dashboard</title>
<script type="text/javascript" src="_lib/jquery.js"></script>
<script type="text/javascript" src="jquery.jstree.js"></script>
<script type="text/javascript" src="_lib/jstreegrid.js"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
var data = [{
data: "basics",
attr: {SOF: "<a href="http://www.w3schools.com">Visit W3Schools.com!</a>"},
children: [
{data: "login", attr: {run: "run"},
children: [
{data: "login", attr: {}}
]
} ,
{data: "Academic Year", attr: {run: "run"},
children: [
{data: "login", attr: {}},
{data: "Academic Year", attr: {filter: "mini", SOF: "<a href="http://www.w3schools.com">Visit W3Schools.com!</a>"}}
]
}
]
}];
$("div#jstree").jstree({
plugins: ["themes","json_data","grid","dnd"],
json_data: {data: data},
grid: {
columns: [
{width: 220, header: "Group"},
{cellClass: "col2", value: "run", width: 40, header: "run"},
{cellClass: "col3", value: "filter", width: 40, header: "filter"},
{cellClass: "col4", value: "SOF", width: 450, header: "SOF"}
]
},
dnd: {
drop_finish : function () {
},
drag_finish : function () {
},
drag_check : function (data) {
return {
after : true,
before : true,
inside : true
};
}
}
});
});
//]]>
</script>
</head>
<body>
<div id="jstree"></div>
</body>
</html>
Комментарии:
1. что вы хотите переключить? видимость? какой-то другой стиль?
Ответ №1:
Один из способов — включить типы и плагины пользовательского интерфейса и определить обработчик события select_node для типа по умолчанию следующим образом:
$(element)
.jstree({
"types" : {
"types" : {
"default" : {
"select_node" : function(e) {
this.toggle_node(e);
return false;
}
}
}
},
"plugins" : [ "themes", "html_data","types", "ui" ] });
Комментарии:
1. не могли бы вы сказать мне, куда именно в моем коде мне нужно вставить ваш код?
2. Поместите блок «типы» прямо перед «плагины». Не забудьте запятую! Не забудьте добавить «пользовательский интерфейс» и «типы» в список «плагины».
3. Если вы новичок в jsTree и ищете базовые примеры, ознакомьтесь с моим сообщением в блоге tkgospodinov.com/jstree-part-1-introduction . Надеюсь, это поможет.
4. работает хорошо …. но высота выбранной / нажатой строки становится больше, поэтому все дерево похоже на перемещение. есть идеи, как это предотвратить? Или мне создать новый вопрос?
5. это решение устарело? кажется, не работает с jstree 3.1.1
Ответ №2:
В дополнение к правильному ответу из TK…
Это решение нарушит навигацию при нажатии на элементы дерева с атрибутом href (задается с помощью JSON, XML-данных или непосредственно в HTML).
Чтобы решить эту проблему, в настроенных на лист «типах» (где привязки должны запускать навигацию) задайте этот обработчик:
"select_node": function (e) {
document.location = e.children("a").attr("href");
return false;
}
Ответ №3:
Вам не нужно добавлять clickable: [...]
опцию при создании вашего дерева?
Ответ №4:
$('#domainvariants').jstree({
plugins : ["themes","html_data","ui","crrm"]
}).bind("select_node.jstree", function (event, data) {
return data.instance.toggle_node(data.node);
});
Комментарии:
1. Этот код выдает мне следующую ошибку при нажатии на элемент: «Ошибка неперехваченного типа: не удается вызвать метод ‘toggle_node’ неопределенного»
2. У меня есть версия «jsTree 2.0.0-alpha»