Как предварительно выбрать узлы, используя jsTree плагин jQuery - PullRequest
3 голосов
/ 11 марта 2010

Я использую плагин jsTree jQuery с его плагином "Checkbox" и асинхронный http-запрос для отложенной загрузки каждого уровня дерева. Все прекрасно работает, за исключением того, что я не могу заставить дерево предварительно выбирать определенные узлы после первого уровня. Я использую атрибут «selected», чтобы предоставить массив идентификаторов для предварительного выбора. Идентификаторы на верхнем уровне дерева правильно выбраны. Однако идентификаторы в нижних уровнях дерева не выбираются при загрузке уровня. Я что-то упустил?

Вот код конструктора:

    var myArrayOfIDs = new Array();
    myArrayOfIDs[0] = '123';  //etc...

    $(sDivID).tree(
        {
            data : {
                async : true,
                opts : {url : sURL}
            },
            plugins:{ 
                "checkbox" : {three_state : false}
            },
            selected : myArrayOfIDs,
            ui:{
                theme_name : "checkbox",
                dots : false,
                animation : 400
            },
            callback : {
                beforedata : function(NODE, TREE_OBJ) { return { id : $(NODE).attr("id") || 0, rand : Math.random().toString() } }
            }
        }
    )

Ответы [ 3 ]

6 голосов
/ 13 октября 2011
$(".jstree").jstree({
    "plugins" : [ "themes", "html_data", "checkbox", "ui" ],
    "checkbox": {
        "real_checkboxes": true,
        "real_checkboxes_names": function (n) {
            return [n[0].id, 1];
        },
        "two_state": true
    }
}).bind("loaded.jstree", function (event, data) {
    $('li[selected=true]').each(function () {
        $(this).removeClass('jstree-unchecked').addClass('jstree-checked');
    });
});

Я использую это для последней версии jstree.

2 голосов
/ 19 мая 2010

Хм, ваш код выглядит нормально для меня.

Я использовал несколько иной подход в своем решении, потому что хотел, чтобы сервер, т. Е. Ваш sURL, сообщал мне, какие элементы следует выбрать, - затем в обратном вызове jsTree я выбираю их.

Обновление: я обновил свой блог jsTree до последней версии jsTree здесь

Матф

1 голос
/ 25 апреля 2014

Вот как я обновляю выбор после загрузки дерева:

$('#jstree_div')
      .on('changed.jstree', treeChanged)
      .on('loaded.jstree', treeLoaded)
      .jstree({
      'plugins': ["checkbox"],
      'core': {
          'data': {
              'url': '/xmldata/getcategories'
          }
      }
  });

function treeLoaded(event, data) {
    data.instance.select_node(['2', '5']); //node ids that you want to check
}
...