jquery – 重新加载整个Fancytree

前端之家收集整理的这篇文章主要介绍了jquery – 重新加载整个Fancytree前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含不同选项的组合框,每个都提供一个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);
    //...
  }
});

猜你在找的jQuery相关文章