2010-03-11 55 views
3

我正在使用带有“Checkbox”插件的jsTree jQuery插件并使用异步http请求来延迟加载树的每个级别。所有的作品都很棒,除了我不能让树在第一级之后预选某些节点。我正在使用“selected”属性来提供一组ID来预先选择。树的顶层ID已正确预选。但是,级别加载时,树的较低级别中的ID未选中。我错过了什么吗?如何使用jsTree jQuery插件预选节点

下面是构造函数代码:

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() } } 
      } 
     } 
    ) 

回答

2

嗯,你的代码看起来好像没什么问题。

我参加了一个稍微不同的方法在我的解决方案,因为我想在服务器即你SURL告诉我哪些项目应选择 - 然后jsTree的onload回调我选择它们。

更新:我已经更新了我jsTree博客文章到最新版本jsTree here

-Matt

+0

由于在自己的博客mattfrear.com/2010/05/19/jstree马特Frear评论,这不能工作了。所以我们没有任何其他解决方案? – Vinh 2011-06-07 14:36:47

+0

@Vinh我已经更新了我的博客文章,因此它现在可以与1.0版本的jsTree一起使用。 – 2011-12-20 10:52:50

+0

嗨,我想感谢你@Matt Frear。我用你的文章,它帮助了我很多。但是现在我想让选定的节点onload。它不适合我。你能看到我的问题吗? http://stackoverflow.com/questions/17519593/how-to-make-some-selected-items-as-checked-on-load-in-jstree-selected-selec – 2013-07-08 05:44:47

6
$(".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的最新版本。

+0

谢谢,它为我工作,我需要它。 – 2013-07-08 05:46:50

+0

从我的理解,当用户取消选择的节点,这将只处理CSS和事业的问题。我能够预选使用本示例中的节点[这里](http://stackoverflow.com/a/34877409/4896260) – usr4896260 2016-02-02 12:53:12

1

这是我如何更新选择树被加载后:

$('#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 
}