jstree中想要选中子节点,父节点就会变成选中状态,需要如何修改。
我用的是jstree4.1.0 ,方块状态的父节点用get_checked获取不了,只能获取子节点id。我要的是只要有选中子节点,子节点和父节点的id都能获取。
jstree的数据是获取数据库表的数据的。根据子节点的id来获取其parent的id也是可以的。但是我想要知道的是如何修改jstree.js,让选中一个子节点,父节点就会为checked状态。 展开
修改方法:
JQuery
$('#子节点id').parent().attr('id');//通过子元素id获取父元素
js
document.getElementById("子节点id").parentNode.getAttribute("id");
1、JS即Javascript,Javascript是一种由Netscape的LiveScript发展而来的脚本语言,主要目的是为了解决服务器终端语言,比如Perl,遗留的速度问题。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。
2、能够具有交互性,能够包含更多活跃的元素,就有必要在网页中嵌入其它的技术。如:Javascript、VBScript、Document Object Model(DOM,文档对象模型)、Layers和 Cascading Style Sheets(CSS,层叠样式表),这里主要讲Javascript。那么Javascript是什么东西?Javascript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。
$('#子节点id').parent().attr('id');//通过子元素id获取父元素
js
document.getElementById("子节点id").parentNode.getAttribute("id");
要下班了,没验证,大致应该是这样
谢谢,不过我说的id是后台数据库表中的id列,不是html标签上的id。这种方法应该是获取不到的。
a.你的数据库id是否就是加载到前台页面的标签id?如果是,那上面的方法应该是可以得到父id的,不管你是不是从数据库调用的id
b.你要用完整版的jstree,压缩版的不好改(反正我看jquery.min.js我是看得一脸懵~B)
你可以在完整的jstree.js中搜索all_checked(好像是这个),选中所有子节点时的方法,参照它去修改选中不全选的方法(不在前面就在后面)
下班去玩了,具体修改方法我也就不研究了,靠你自己了。
需要自己写一个方法,获取全部的节点,包括父节点和子节点
//更新获取全部checked节点
$.jstree.core.prototype.get_all_checked = function(full) {
var tmp=new Array;
for(var i in this._model.data){
if(this.is_undetermined(i)||this.is_checked(i)){tmp.push(full?this._model.data[i]:i);}
}
return tmp;
};
获取方法
$('#jstree').jstree(true).get_all_checked(); // 这个返回的ID数组
$('#jstree').jstree(true).get_all_checked(true); //这个返回的是选中的对象数组