
刚好我也碰到这个问题。bind("select_nodejstree", function (event, data) { //myThisid 是jstree的Id,还有你必须设置每个节点的id
$('#' + myThisid)jstree("toggle_node", "#"+datarsltobjattr("id"));
})
意思是让您把jstree的js 里面那个位置的那段代码替换成他的:
for (var i=0; i<datalength; i++){
var n = TREE_OBJcreate(data[i], $(NODE)); //就是这里特别耗
if (onaddnode) onaddnode(n);
}
var firstChild = TREE_OBJchildren(NODE)[0];
if ($(firstChild)attr('id')==-1)
TREE_OBJremove(firstChild);
修改成:
var children="";
for (var i=0; i<datalength; i++)
{
children += TREE_OBJparseJSON(data[i]);
}
if (children != "")
$(NODE)children('ul')html(children);
var firstChild = TREE_OBJchildren(NODE)[0];
if ($(firstChild)attr('id')==-1)
TREE_OBJremove(firstChild);
区别是一个是for循环里一次一次的生成节点插入页面,这样本来就很卡
另一个是将所有节点先存入一个变量里,然后在一次性插入页面里,这样效率自然高很多很多
一个带有右键 *** 作的树形菜单
$(document)ready(function(){$ajaxSetup({cache:false});
$("#browser")tree({
data : {
type : "json",
url : src,
async : true,
async_data : function (NODE) {
return { parent_Id : $(NODE)attr("id") || 0}
}
},
lang:{
loading:"目录加载中……"
},
rules:
{
draggable : "all" //这个设置可以使得节点进行拖动 *** 作
},
ui:{
context : [ //自定义右键 *** 作的可 *** 作内容
{
id : "create",
label : "添加下级目录", //右键d出菜单的此项 *** 作屏显字样
visible : function (NODE, TREE_OBJ) { if(NODElength != 1) return false; return TREE_OBJcheck("creatable", NODE); }, //允许节点被右击时出现 *** 作菜单
icon : "<%=requestgetContextPath() %>/css/themes/default/createpng",//右键d出菜单的此项 *** 作图标
action : function (NODE, TREE_OBJ) {
//进行此项 *** 作,将有这个函数事件被响应
}
},
"separator"//这个是在两个 *** 作之间画一条分隔线
,
{
id : "edit",
label : "编辑目录信息",
visible : function (NODE, TREE_OBJ) { if(NODElength != 1) return false; return TREE_OBJcheck("creatable", NODE); },
icon : "<%=requestgetContextPath() %>/image/reg2gif",
action : function (NODE, TREE_OBJ) {
openWindow('myurl','','',function(){treeRefresh($(NODE)attr("id"));});
}
},
"separator"
,
{
id : "privilege",
label : "设置目录权限",
visible : function (NODE, TREE_OBJ) { if(NODElength != 1) return false; return TREE_OBJcheck("creatable", NODE); },
icon : "<%=requestgetContextPath() %>/css/themes/default/renamepng",
action : function (NODE, TREE_OBJ) {
openWindow('myurl','','',function(){treeRefresh($(NODE)attr("id"));});
}
},
"separator",
{
id : "delete",
label : "删除",
visible : function (NODE, TREE_OBJ) { if(NODElength != 1) return false; return TREE_OBJcheck("creatable", NODE); },
icon : "<%=requestgetContextPath() %>/css/themes/default/removepng",
action : function (NODE, TREE_OBJ) {
var tree=$tree_reference("browser");
openWindow('myurl','','',function(){
//下边的parent()和refresh()均为v098版本提供,如果你使用的是其他版本如v096等,这些将不被支持。
NODE=$(treeparent(NODE));
if($(NODE)attr("id")==undefined){
treerefresh();
}else{
TreeRefresh();
}
});
}
},
"separator",
{
id : "others",
label : "其他 *** 作",
visible : function (NODE, TREE_OBJ) { if(NODElength != 1) return false; return TREE_OBJcheck("creatable", NODE); },
icon : "<%=requestgetContextPath() %>/css/images/cutpng",
action : function (NODE, TREE_OBJ) {
alert("暂无可提供 *** 作。");
}
}
]
},
callback : {
onselect: function(node) {
//(a);
}
}
});
function treeRefresh(nodeid){
var rid=nodeid;
var tree=$tree_reference("browser");
var par_node=treeparent($("#"+rid));
treerefresh(par_node);
}
});
$('#myHtml')on("select_nodejstree", function (e, data) {
var test = $('#myHtml')jstree('get_selected');
var isParent = $('#myHtml')jstree(true)is_parent(test);
alert(test);
alert(isParent);
}
可以尝试一下
修改方法:
JQuery
$('#子节点id')parent()attr('id');//通过子元素id获取父元素
js
documentgetElementById("子节点id")parentNodegetAttribute("id");
1、JS即Javascript,Javascript是一种由Netscape的LiveScript发展而来的脚本语言,主要目的是为了解决服务器终端语言,比如Perl,遗留的速度问题。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有288kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。
2、能够具有交互性,能够包含更多活跃的元素,就有必要在网页中嵌入其它的技术。如:Javascript、VBScript、Document Object Model(DOM,文档对象模型)、Layers和 Cascading Style Sheets(CSS,层叠样式表),这里主要讲Javascript。那么Javascript是什么东西Javascript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。
jsp从mysql数据库读取数据,并填充到树形结构菜单并展现出来的实现方法:
1、引入jquerytreeviewjs树控件
<script type="text/javascript" src="jquery/easyui/jqueryminjs"></script>
<script type="text/javascript" src="jquery/easyui/jqueryeasyuiminjs"></script>
2、jsp页面中获取后台mysql数据,并传到jsp页面来
<%
// 数据库的名字
String dbName = "zap";
// 登录数据库的用户名
String username = "sa";
// 登录数据库的密码
String password = "123";
// 数据库的IP地址,本机可以用 localhost 或者 127001
String host = "127001";
// 数据库的端口,一般不会修改,默认为1433
int port = 1433;
String connectionUrl = "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + dbName + ";user=" + username
+ ";password=" + password;
//
//声明需要使用的资源
// 数据库连接,记得用完了一定要关闭
Connection con = null;
// Statement 记得用完了一定要关闭
Statement stmt = null;
// 结果集,记得用完了一定要关闭
ResultSet rs = null;
try {
// 注册驱动
ClassforName("commicrosoftsqlserverjdbcSQLServerDriver");
// 获得一个数据库连接
con = DriverManagergetConnection(connectionUrl);
String SQL = "SELECT from note";
// 创建查询
stmt = concreateStatement();
// 执行查询,拿到结果集
rs = stmtexecuteQuery(SQL);
while (rsnext()) {
%>
<tr>
3、填充树形菜单:
{
id : "string" // will be autogenerated if omitted
text : "string" // node text
icon : "string" // string for custom
state : {
opened : boolean // is the node open
disabled : boolean // is the node disabled
selected : boolean // is the node selected
},
children : [] // array of strings or objects
li_attr : {} // attributes for the generated LI node
a_attr : {} // attributes for the generated A node
}
$('#tree')jstree({
'core' : {
'data' : function (obj, cb) {
cbcall(this,
['Root 1', 'Root 2']);
}
}});
您好,很高兴为您解答。
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ";
如若满意,请点击右侧采纳答案,如若还有问题,请点击追问
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
以上就是关于jsTree想实现点击父节点的文字展开, 而不是点左边的下来按钮, 我查了官方的API, 没找的合适全部的内容,包括:jsTree想实现点击父节点的文字展开, 而不是点左边的下来按钮, 我查了官方的API, 没找的合适、jquery jstree加载数据太多卡死、(JQuery)如何给JsTree生成的树的每个节点添加上自定义的右键菜单等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)