Я использую плагин jsTree jQuery. У меня проблема с тем, что мое дерево изначально развернуто.
Это то, что пользователь видит при загрузке страницы:
Это то, что я хочу, чтобы пользователь увидел:
Ниже приведен HTML-код, который я использовал для тестирования. Я обнаружил, что это поведение определяется порядком аргументов initially_select
. Когда у меня 'initially_select': ['2', '1']
, дерево изначально показано развернутым. Когда у меня 'initially_select': ['1', '2']
, дерево изначально показывается закрытым. При выборе самых верхних узлов дерево остается закрытым. Однако в моем реальном случае использования у меня есть значимые идентификаторы на моих узлах, которые нелегко сортировать; У меня нет [простого] способа легко определить, какие элементы являются «самыми верхними» в моем дереве.
Я попробовал предложенные решения здесь . Я вызвал close_all
в обратном вызове loaded.jstree
, но кажется, что загруженный обратный вызов события запускается до того, как будут выбраны элементы initially_selected
. Таким образом, jsTree закрывает все узлы (которые уже закрыты), а затем выбирает несколько узлов, в результате чего многие из них снова расширяются.
Все, что я хочу, - это чтобы мой jsTree полностью свернулся, когда пользователь загружает страницу.
Вот HTML-код для демонстрации:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html lang="en">
<head>
<title>jsTree Test</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<div id="my_tree">
<ul>
<li>
<a id="1">Item 1</a>
<ul>
<li><a id="2">Item 1.1</a></li>
</ul>
</li>
</ul>
</div>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="jquery.jstree.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#my_tree').jstree(
{'plugins': ['themes', 'checkbox', 'html_data', 'ui'],
'checkbox': {'override_ui': true, 'real_checkboxes': true},
'ui': {'initially_select': ['2', '1']},
'themes': {'icons': false}}
);
});
</script>
</body>
</html>