jsTree расширяет узлы на основе порядка аргумента initial_selected? - PullRequest
0 голосов
/ 28 марта 2012

Я использую плагин jsTree jQuery. У меня проблема с тем, что мое дерево изначально развернуто.

Это то, что пользователь видит при загрузке страницы:

enter image description here

Это то, что я хочу, чтобы пользователь увидел:

enter image description here

Ниже приведен 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>

1 Ответ

0 голосов
/ 03 мая 2012

Попробуйте протестировать его с помощью jquery 1.6.4.

У меня проблемы с использованием jstree с jquery 1.7.x, и мне пришлось вернуться к 1.6.4

...