Отменить выбор выбранного treenode JStree - jquery

Ситуация

Когда моя страница загружена, а мое древовидное изображение является видимым, не выбран treenode. Когда я нажимаю на node, он выбирается, по умолчанию используется.

Вопрос

Как отменить выбор node, нажав на тот же node? Поэтому я хочу нажать на выбранный node, чтобы отменить выбор. Я искал документацию. Но событие "select_node" сначала выберет node, прежде чем я смогу проверить его selectstatus.

Я знаю, что есть способ отменить node с кодом, когда я нажимаю на кнопку, но это не то, что я хочу. Я хочу щелкнуть уже выбранный node.

Может кто-нибудь мне помочь?

Ссылка (ы)

События документации JStree: http://www.jstree.com/api/#/?q=.jstree%20Event&f=enable_node.jstree

Ответ 1

Эта проблема появилась сегодня для меня. Я ожидал хотя бы параметра конфигурации, который можно было бы установить при инициализации дерева. Хотя это не очень, это то, что я сделал, чтобы обойти проблему:

var _selectedNodeId;
$("#myTree").on("select_node.jstree", function (e, _data) {
    if ( _selectedNodeId === _data.node.id ) {
        _data.instance.deselect_node(_data.node);
        _selectedNodeId = "";
    } else {
        _selectedNodeId = _data.node.id;
    }
}).jstree();

По сути, я отслеживаю выбранный node и проверяю его на node, который был нажат. Недостатком этого метода является то, что если у вас есть обратный вызов на "changed.jstree", он срабатывает дважды, поскольку вы сначала "выбираете", а затем "отменяете", если он уже выбран.

Ответ 2

Я нашел способ включить это поведение, добавив плагин multiselect. И установите для параметра multiple параметр конфигурации false, если вам нужен один выбор:

$('#my-tree').jstree({
  core: { multiple: false },
  plugins: ['multiselect']
})

Ответ 3

Чтобы отменить выбор выбранного узла, нажмите.

$('#my-tree').('click', '.jstree-clicked', function () {
  $('#my-tree').(true).deselect_node(this);
});

Также вы можете добавить слушателя на отмене выбора.

$("#myTree").on("deselect_node.jstree", function (e, data) {
  ...
});