不能使用addChild方法

时间:2012-03-12 09:48:47

标签: javascript jquery jquery-dynatree

我第一次使用dynatree插件,我正在尝试动态添加节点。 我的代码如下:

function DrawTree() {
 var names = GetChildName();  
 var rootNode = $("#ProcessRoleTree").dynatree("getRoot");
 var childNode = rootNode.addChild({ title: names[0].Name });
}

在运行时显示错误

  

Microsoft JScript运行时错误:对象不支持此属性或方法

我错过了什么吗? 我已经验证我包含了所需的库:

<script src="Jquery/jquery/jquery.js" type="text/javascript"></script>
<script src="Jquery/jquery/jquery-ui.custom.js" type="text/javascript"></script>
<script src="Jquery/jquery/jquery.cookie.js" type="text/javascript"></script>

<link href="Jquery/src/skin-vista/ui.dynatree.css" rel="stylesheet" type="text/css" />
<script src="Jquery/src/jquery.dynatree.js" type="text/javascript"></script>

提前致谢!

2 个答案:

答案 0 :(得分:0)

您需要首先初始化树,然后才能拨打dynatree("getRoot"),例如在最简单的例子中

function DrawTree() {
  var names = GetChildName();
  $("#ProcessRoleTree").dynatree();
  var rootNode = $("#ProcessRoleTree").dynatree("getRoot");
  var childNode = rootNode.addChild({ title: names[0].Name });
 }

应该有效。您可以将许多其他选项传递到树初始化步骤,例如见the documentation

答案 1 :(得分:0)

这可能不是你的问题,但值得一试。有时,当将jQuery与其他库一起使用时,您可能会遇到与冲突代码冲突的问题。 jQuery使用$ sign作为jQuery的快捷方式。 dynatree库也使用美元符号来表示它们的功能。

我在实现我的树时遇到了这个问题,这就是我修复它的方法。如您所见,我将所有'$'替换为'jQuery'。

<script type="text/javascript">
jQuery.noConflict();

function DrawTree() {
    var names = GetChildName();
    jQuery("#ProcessRoleTree").dynatree();

    var rootNode = jQuery("#ProcessRoleTree").dynatree("getRoot");

    //Try adding a key
    var childNode = rootNode.addChild({ title: names[0].Name, key: "001" });
}
</script>