使用$ .empty()清除包含div时,无法再次呈现dynatree树视图

时间:2012-06-04 17:10:36

标签: jquery css dynatree

我正在使用openTemplate函数在#TreeDiv中渲染一个dynatree树视图。在我为dynatree中的某个模板加载所有单元之前,我清空/清除#TreeDiv以删除现有树。这是第一次有效。

当我尝试在#TreeDiv中为其他模板加载其他单位时,我没有看到我的单位数据,div只是空的。不知何故#TreeDiv被破坏了,因为代码像第一次创建单元树一样正常运行。区别在于,我第二次做.empty()时已经有了一棵树。

我错了什么?

function openTemplate(dlg, form) {
        $.ajax({
            url: $(form).attr('action'),
            type: 'POST',                     
            data: form.serialize(),
            success: function (response) {          
                if (response.success) {
                    dlg.dialog("close");                
                   $('#TreeDiv').empty();         
                   loadUnits(response.data);                    
                }
                else {
                    // Reload the dialog with the form to show model/validation errors 
                    dlg.html(response);
                }
            }
        });
    }

 function loadUnits(data) {       
        $('#TreeDiv').dynatree({
            onActivate: function (node) {
                getTestSteps(node.data.key);
            },            
            onLazyRead: function (node) {           
                node.appendAjax({
                    url: '@Url.Action("GetChildrenUnits","Unit")',
                    data: {"unitId": node.data.key, "templateId": 1 }
                });
            },
            children: data
        });
    }

1 个答案:

答案 0 :(得分:1)

看起来在loadUnits调用之前没有完成对empty()的调用。

您可以将empty()调用包装在untilTimeout中。或者你可以在try或if语句中封装。 IE,如果为空则完成,然后调用loadUnits