我有一个包含不同选项的组合框,每个都提供一个fancytree屏幕.
我做一个ajax电话来获取fancytree的来源,但它不是重新加载,一次又一次显示相同的选项.
部分代码:
$.ajax({ url: "get_treedata.PHP",type: "POST",data: { id: id },success: function(json){ console.log(json); var mynodes = JSON.parse(json); $('#t-board').fancytree( // t-board is my div container { source: mynodes,... // my other options }); } });
该代码在我在组合框的“onchange”中调用的函数内.
告诉我你的想法,如果我需要更具体或某些东西.
提前致谢.
解决方法
您不能重新初始化树.但是您可以更新树选项或使用新的源选项重新加载它们.
>使用新的源选项重新加载树
var treeOptions = {...}; // initial options $('#t-board').fancytree(treeOptions); $('#comboBox').change(function () { var id = $('option:selected',this).val(); var newSourceOption = { url: 'get_treedata.PHP',type: 'POST',data: { id: id },dataType: 'json' }; var tree = $('#t-board').fancytree('getTree'); tree.reload(newSourceOption); });
>添加或替换其他树选项
var treeOptions0 = {...}; // initial options var treeOptions1 = {...}; // other tree options var treeOptions2 = {...}; $('#t-board').fancytree(treeOptions0); $('#comboBox').change(function () { var id = $('option:selected',this).val(); if(id === '1'){ $('#t-board').fancytree('option','selectMode',treeOptions1.selectMode); $('#t-board').fancytree('option','renderNode',treeOptions1.renderNode); $('#t-board').fancytree('option','icons',treeOptions1.icons); //... }else if(id === '2'){ $('#t-board').fancytree('option',treeOptions2.selectMode); $('#t-board').fancytree('option',treeOptions2.renderNode); $('#t-board').fancytree('option',treeOptions2.icons); //... } });