1

我正在尝试创建一个在节点中包含多个文本块的树(例如,标题,然后是用户可以单击以在树中创建该节点的新子节点的链接)。目前 jstree 似乎不支持这种事情,但我正在寻找任何好的解决方法(不希望将链接放在上下文菜单中)。

我以这种方式创建了 json 哈希:

    def item_to_json_hash(item)

    data = {:item_id => item.id, :data => html_for_item_data(item)}

    children = []

    if (item.has_children?)
        children_collection = item.children
        children_collection.each do |child|
            children << item_to_json_hash(child)
        end

        data[:children] = children
    end 

    return data
end

def html_for_item_data(item)
    return %Q|<table style='display: inline-block'><tr><td>#{item.data}</td><td><a href="/items/new?id=#{item.id}">New Child of Item</a></td></tr></table>|
end

我认为将两个文本块放入带有 html 标记的长字符串中会有所帮助,但是 jstree 期望节点作为一个整体被选中的事实干扰了节点内部的链接。

这是我的索引,它显示了构建树的 javascript:

<script type="text/javascript">
$(document).ready(function(){
    $("#collisterator_tree").jstree({
            core : { "html_titles" : true},
            themes : { "theme" : "classic" },
            "json_data" : {
                "ajax" : { 
                    "url" : "/items.json",
                    "data" : function(m) {
                            var html_data = m.attr                              
                            return { id : html_data ? m.attr("id") : 0 };
                        }
                }
            },
            plugins : ["themes", "json_data", "ui" ]
})
});

编辑 自己找到了我的答案。在这里张贴以防有人感兴趣。一年前的堆栈溢出问题给了我需要的提示:从插件中删除“ui”使我自己的节点内的链接可点击。

4

0 回答 0