转载:
js 代码
- 在xtree.js的最后添加
- function WebFXCheckBoxTreeItem(sText, sAction, bChecked, eParent, sIcon, sOpenIcon) {
- this.base = WebFXTreeItem;
- this.base(sText, sAction, eParent, sIcon, sOpenIcon);
- this._checked = bChecked;
- }
- WebFXCheckBoxTreeItem.prototype = new WebFXTreeItem;
- WebFXCheckBoxTreeItem.prototype.toString = function (nItem, nItemCount) {
- var foo = this.parentNode;
- var indent = '';
- if (nItem + 1 == nItemCount) { this.parentNode._last = true; }
- var i = 0;
- while (foo.parentNode) {
- foo = foo.parentNode;
- indent = " + this.id + "-indent-" + i + "\" src=\"" + ((foo._last)?webFXTreeConfig.blankIcon:webFXTreeConfig.iIcon) + "\">" + indent;
- i++;
- }
- this._level = i;
- if (this.childNodes.length) { this.folder = 1; }
- else { this.open = false; }
- if ((this.folder) || (webFXTreeHandler.behavior != 'classic')) {
- if (!this.icon) { this.icon = webFXTreeConfig.folderIcon; }
- if (!this.openIcon) { this.openIcon = webFXTreeConfig.openFolderIcon; }
- }
- else if (!this.icon) { this.icon = webFXTreeConfig.fileIcon; }
- var label = this.text.replace(//g, '>');
- var str = " + this.id + "\" οndblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" οnkeydοwn=\"return webFXTreeHandler.keydown(this, event)\">";
- str += indent;
- str += " + this.id + "-plus\" src=\"" + ((this.folder)?((this.open)?((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon):((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon)):((this.parentNode._last)?webFXTreeConfig.lIcon:webFXTreeConfig.tIcon)) + "\" οnclick=\"webFXTreeHandler.toggle(this);\">"
- // insert check box
- str += " +
- " class=\"tree-check-box\"" +
- (this._checked ? " checked=\"checked\"" : "") +
- " οnclick=\"webFXTreeHandler.all[this.parentNode.id].setChecked(this.checked)\"" +
- " />";
- // end insert checkbox
- str += " + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" οnclick=\"webFXTreeHandler.select(this);\"> + this.action + "\" id=\"" + this.id + "-anchor\" οnfοcus=\"webFXTreeHandler.focus(this);\" οnblur=\"webFXTreeHandler.blur(this);\">" + label + ";
- str += " + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i,this.childNodes.length);
- }
- str += " ";
- this.plusIcon = ((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon);
- this.minusIcon = ((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon);
- return str;
- }
- WebFXCheckBoxTreeItem.prototype.getChecked = function () {
- var divEl = document.getElementById(this.id);
- var inputEl = divEl.getElementsByTagName("INPUT")[0];
- return this._checked = inputEl.checked;
- };
- WebFXCheckBoxTreeItem.prototype.setChecked = function (bChecked) {
- if (bChecked != this.getChecked()) {
- var divEl = document.getElementById(this.id);
- var inputEl = divEl.getElementsByTagName("INPUT")[0];
- this._checked = inputEl.checked = bChecked;
- if (typeof this.onchange == "function")
- this.onchange();
- }
- };
并且在tree.js调用时把WebFXTreeItem 改成 WebFXCheckBoxTreeItem 其他的具体的你可以看下注视
xtree的作者 非常仔细地注释
"