使用ajax而不是硬编码加载html会破坏easy-tree插件

时间:2015-05-04 16:38:23

标签: javascript jquery html ajax

我正在使用这个漂亮的插件在我的网页中生成一个树:

https://github.com/zgs225/easy-tree

当将listitems硬编码到页面的html中时,我得到了完美的结果。所有造型等..工作。

但是,当使用ajax(html字符串)检索listitems时,树的样式设置不正确。我认为这与加载和设置所有内容的顺序有关。有什么想法出错吗?

 $.ajax({ 
        url: "@(Url.Action("YearTree", "Year"))", 
        data: {year: yearid},
        success: function (data) {
            if (data.length != 0) {
                $(".easy-tree").append(data);
                $(".easy-tree").EasyTree({
                    selectable: true,
                    deletable: false,
                    editable: false,
                    addable: false,
                    i18n: {
                    }
                });
            } else {

            }
        }
    });

ajax的输出:

"<ul><li>Example 1</li><li>Example 2</li><li>Example 3<ul><li>Example 1</li><li>Example 2</li></ul></ul>"

控制器:

string a = "<ul><li>Example 1</li><li>Example 2</li><li>Example 3<ul><li>Example 1</li><li>Example 2</li></ul></ul>"; 
return Json(new string[] { a }, JsonRequestBehavior.AllowGet);

我做了一个小提琴:

https://jsfiddle.net/pbxhtj3b/

1 个答案:

答案 0 :(得分:0)

如果显示的html字符串的外部引号确实正在发送,您应该只在服务器上删除它们并单独发送html字符串。然后相应地更改if textblocktest.Margin.Left < TotalMargin { textBlock.Margin = New Thickness(textblock.Margin.Left + aNumber,0,0,0) } else{ //Call a procedure doing the same thing but decrementing the margin until it is at 0 and then going back to adding margin } (或删除它)

您的代码的顺序是正确的,但是这些额外的引号会导致无效的html插入DOM中

如果目标元素是emty,您可以使用附加...如果要替换该元素中的现有html,请使用dataType方法