我在我的页面中添加了一个 jsTree,即 jQuery 1.6.4:
<div id="categoriesMenu" class="categoriesMenu"><!-- --></div>
<script type="text/javascript">
function convertCategoriesForMenu(categories) {
var scrubbedData = [];
$.each(categories, function(idx,category) {
var scrubbedCat = {
"data" : category.name,
"metadata" : { id : category.id },
"children" : convertCategoriesForMenu(category.childCategories),
"attr" : { "href" : "${categories_base_url}"+category.id }
};
scrubbedData.push(scrubbedCat)
});
return scrubbedData;
}
$(function () {
$("#categoriesMenu").jstree({
"json_data" : {
"ajax" : {
"url" : "${categories_base_url}",
"success" : function (data) {
return convertCategoriesForMenu(data);
}
}
},
"themes" : {
"theme" : "classic",
"dots" : false,
"icons" : false
},
"plugins" : [ "themes", "json_data" ]
});
});
</script>
但是,它将每一行显示为扩展图像,然后在新行(和灰色背景)上显示标题:
我似乎无法弄清楚为什么。从我的服务器返回的 JSON 数据前面似乎没有任何回车或换行,我在 JS 中放置了断点并确认浏览器解析 JSON 时,它似乎也没有任何回车或换行。
我尝试换掉主题,但这似乎没有任何效果。
编辑 1 CSS 继承绝对是问题所在。看起来它正在为#menu 从 Roo 的 standard.css 样式中提取 display:block。问题是,需要这种样式,以便菜单内容最终位于左侧,这就是我使用 jsTree 的目的。
树的结构如下:
<ul> <!-- root of menu, display:block -->
<li> <!-- Node element, display:block -->
<ins /> <!-- image, display:inline -->
<a>Node Name</a> <!-- text for node, display:inline -->
</li>
</ul>
如果我将树放在标签之外,它会按预期工作。但是,如果我把它放在里面,所有的元素都会被设置为 display:block。
所以,问题是:如何在 and 标签上应用 CSS 样式?