`
tk_zhang
  • 浏览: 232063 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JQuery的JSTree(下篇)

阅读更多

接上篇:

PART C.


最后,再介绍一种带有checkbox功能效果的JSTree

 $.ajaxSetup({cache:false});
    $("#checktreeToshow").tree({
    data  : {
        //内容同上,略过。
      },
       ui : {
        //作者提供了checkbox效果的主题包,引入项目并指明包的位置
       theme_path  : "<%=request.getContextPath() %>/css/themes/",
        //指出主题包的名字,如checkbox,或者是apple(苹果操作平台下的效果主题)
       theme_name : "checkbox",
       //理论上指定了主题包的位置和主题包的名字就可以使用带有checkbox功能的JSTree了,但我却并没有得到我想要的效果,所有的节点被点击时无法被勾选。似乎主题包内的change.js没有响应。因此我临时做了个比较糟糕的实现,就是写一个function checkChange(NODE, TREE_OBJ)函数,函数内容为checkbox主题包中change.js文件提供的onchange函数内容。自定义的checkChange函数即将你所操作的NODE节点的checkbox的勾选状态取反。因为我的onchange没有勾选效果,所以手工的添加了checkChange函数来实现。同理,我想要在节点的子节点加载进来后根据父节点是否被勾选来决定加载进来的子节点的勾选状态,于是onopen函数也做了调整,不过这里的调整并不完善,有许多细节的瑕疵,如果你是JSTree的高手,欢迎交流经验。
        context:{visible : function (NODE, TREE_OBJ) {
                    return false;
                }}
  },
      lang:{
           loading:"目录加载中……"
   },
   callback:
   {
   onchange : function (NODE, TREE_OBJ) {
                                          checkChange(NODE, TREE_OBJ);
                                          },
   onopen:function(NODE, TREE_OBJ){
                                       var $this = $(NODE).is("li") ? $(NODE) : $(NODE).parent();
                                       var status=($this.children("a").attr("class").substring(0,7));
                                       var tree=$.tree_reference("checktreeToshow");
                                       if($(NODE).attr("where")=="0")
                                       {
                                           if(status=="checked")
                                           {   
                                               checkChange(NODE, TREE_OBJ);
                                               checkChange(NODE, TREE_OBJ);
                                           }
                                       }
                                       else
                                       {
                                           if(status=="checked")
                                           {   
                                               //NODE=$(tree.parent(NODE));
                                               $this = $(NODE).is("li") ? $(NODE) : $(NODE).parent();
                                               status=($this.children("a").attr("class")).substring(0,7);
                                               if(status=="checked")
                                               {
                                               checkChange(NODE, TREE_OBJ);
                                               checkChange(NODE, TREE_OBJ);
                                               }
                                           }
                                       }
                                     }                                                        
   }     
 
});
}

  下面是我自定义的checkChange函数,函数体为主题中change.js文件提供的函数内容:

function checkChange(NODE, TREE_OBJ)
{
 var $this = $(NODE).is("li") ? $(NODE) : $(NODE).parent();
 if($this.children("a.unchecked").size() == 0) {
   TREE_OBJ.container.find("a").addClass("unchecked");
 }
 $this.children("a").removeClass("clicked");
 if($this.children("a").hasClass("checked")) {
   $this.find("li").andSelf().children("a").removeClass("checked").removeClass("undetermined").addClass("unchecked");
   var state = 0;
 }
 else {
   $this.find("li").andSelf().children("a").removeClass("unchecked").removeClass("undetermined").addClass("checked");
   var state = 1;
 }
 $this.parents("li").each(function () {
   if(state == 1) {
     if($(this).find("a.unchecked, a.undetermined").size() - 1 > 0) {
       $(this).parents("li").andSelf().children("a").removeClass("unchecked").removeClass("checked").addClass("undetermined");
       return false;
     }
     else $(this).children("a").removeClass("unchecked").removeClass("undetermined").addClass("checked");
   }
   else {
     if($(this).find("a.checked, a.undetermined").size() - 1 > 0) {
       $(this).parents("li").andSelf().children("a").removeClass("unchecked").removeClass("checked").addClass("undetermined");
       return false;
     }
     else $(this).children("a").removeClass("checked").removeClass("undetermined").addClass("unchecked");
   }
 });
}

  以上为个人的一点小总结,可以给我作为备忘以便以后再使用。如果你也在使用JQuery的JSTree,希望能对你有些许帮助,同时它更多的内容我也在不断尝试中。

 
   最后再说一下,JSTree下载后下载包中会自带JQuery的jquery.js文件,使用这个肯定没问题,但如果你的项目已经存在了jquery.js文件,有可能会出现$("#" + this.container.attr("id") + " li").live is not a function     tree_component.js (第 1028 行)  【注: 该异常捕获于FF浏览器,使用的JSTree为v0.9.6】,因为JSTree对JQuery的版本还是有依赖性的,作者对此异常的解释为:“It is the jQuery version that is used. You need to use the supplied jQuery (or the latest from http://jquery.com) . Version 1.2.6 does not support live events (they are introduced in 1.3).”


JSTree下载地址:http://jstree.googlecode.com/files/jsTree.v.0.9.8.zip
分享到:
评论
3 楼 tk_zhang 2010-12-03  
Javakeith 写道
那些JS放在哪位置?为什么我的页面显示不了呢?LZ能给我个Demo吗?js本来就不好,JSON也不了解,麻烦了LZ!



上篇中有介绍!
2 楼 Javakeith 2010-12-03  
那些JS放在哪位置?为什么我的页面显示不了呢?LZ能给我个Demo吗?js本来就不好,JSON也不了解,麻烦了LZ!
1 楼 signs228 2010-04-21  
请问,如何让checkbox和default两个样式同时存在?
或者说,我想在checkbox前面放置文件夹或者文件的图标.

相关推荐

    JsTree静态例子

    本篇文章将深入探讨如何使用JsTree创建一个静态的例子。 首先,我们需要从JsTree的官方网站下载最新版本的库文件。这通常包括`jstree.js`(核心脚本)、`jstree.css`(样式表)以及可能的插件和主题文件。确保将...

    jstree ajax application

    根据提供的文件信息,我们可以推断出这是一篇关于 jstree 的 AJAX 应用程序的文章。jstree 是一个 jQuery 插件,用于创建树形结构的导航菜单或图谱。通过结合 AJAX 技术,可以实现动态加载数据,提高用户体验。 ###...

    jquery tree

    在本篇文章中,我们将深入探讨 jQuery Tree 的核心特性、使用方法以及与其他相关技术如 AJAX 和 jstree 的关联。 ### 1. jQuery Tree 功能特性 - **右键操作**:jQuery Tree 支持右键菜单,用户可以通过右键点击...

    jquery下jstree简单应用 – v1.0

    第一篇文章,具体使用也过去很长时间了,直接贴码: 1.代码中使用json数据格式(直接在页面中组装成的,并非后台组装,具体方法:function _callBack(d)) 2.提供右键菜单及功能实现 3.具有checkbox,提供获取选中...

    jQuery树形插件jquery.simpleTree.js用法分析

    对于想要深入了解jquery.simpleTree.js及其在不同场景下的应用,可以参考以下资源: - 《jQuery扩展技巧总结》 - 《jQuery常用插件及用法总结》 - 《jQuery拖拽特效与技巧总结》 - 《jQuery表格(table)操作技巧汇总...

    easyui tree扁平化扩展,不用再为children嵌套结构烦恼

    EasyUI Tree插件是基于jQuery的一个轻量级插件,它提供了一种简单的方式创建树形控件。然而,在实际应用中,我们常常遇到数据结构的问题——即如何处理带有`children`属性的嵌套数据结构。这篇文章将详细介绍如何对...

    js树状地区三级级联带复选框

    如果压缩包中的文件名为“jstree”,那么很可能使用了JSTree这个库。JSTree是一个基于JavaScript的开源库,专门用于创建、操作和展示复杂的树结构。它支持多选、级联选择以及自定义数据源等功能,非常适合实现“js...

    Web开发带checkbox的treeview

    本篇文章将深入探讨如何使用jsTree这个jQuery插件来实现带有复选框的TreeView,以及它提供的强大功能和配置选项。 jsTree是一款功能丰富的JavaScript库,专门用于创建可操作的树形视图。其最大的优点在于它的高度可...

    jqury 动态树

    3. **引入jQuery库和插件**:在页面中引入jQuery库以及用于实现动态树的jQuery插件,如`jstree`或自定义的实现。确保它们在HTML文档的`&lt;head&gt;`部分正确引用。 4. **JavaScript初始化**:使用jQuery选择器定位到预留...

    测试jquery easyui demo

    在本篇文章中,我们将深入探讨jQuery EasyUI的核心概念、主要组件以及如何通过实践来创建一个简单的示例。 首先,jQuery EasyUI 是一个轻量级的框架,它提供了大量的UI组件,如对话框(dialog)、表格(datagrid)...

    tree.jsp集结

    常见的JavaScript库如jQuery、d3.js、jstree等都提供了构建树形结构的功能。这些JS文件可能包含以下关键知识点: 1. **数据结构**:在JavaScript中,可以使用对象和数组来表示树形结构,每个节点是一个对象,包含...

    漂亮的JS多级树型下拉菜单

    本篇文章将深入探讨如何利用JS实现漂亮的多级树型下拉菜单,并分享一些关键的技术要点。 首先,我们要理解树形结构的本质。在计算机科学中,树是一种数据结构,它由节点(或称为顶点)和边组成,每个节点可以有零个...

    jQuery EasyUi实战教程之布局篇

    这意味着在实际开发中,开发者需要测试jQuery EasyUI在不同浏览器下的显示和功能效果,以确保最终的应用在所有目标浏览器上都能正常工作。这通常涉及到跨浏览器测试和使用特定的CSS hacks或JavaScript polyfills来...

    Rails3 使用Jquery datepicker

    这篇博客“Rails3 使用Jquery datepicker”将会介绍如何在Rails 3项目中集成并使用这个功能强大的日期选择器。 首先,我们需要了解jQuery UI的datepicker组件。它是一个用户友好的界面元素,允许用户方便地选择日期...

    jquery.treeview

    本篇将深入探讨如何利用jQuery Treeview构建动态树,并介绍其与Ajax的集成,以便实时更新和加载数据。 一、jQuery Treeview 插件简介 jQuery Treeview 是一款基于jQuery库的开源插件,主要用于将HTML列表转换为...

    Js操作树节点自动折叠展开的几种方法

    本篇文章将探讨两种在JS中实现树节点自动折叠和展开的方法,这两种方法适用于使用特定组件库或者自定义树结构的情况。 **方法一** 在方法一中,我们首先通过`L5.getCmp`获取到指定ID为`edocOutfileRelationTree`的...

    异步树生成

    6. **初始化插件**:如果使用了第三方的jQuery树形插件,如`jstree`,还需要按照插件文档配置和初始化,以便它能正确处理异步加载的数据。 例如,使用`jstree`插件时,你可以这样设置: ```javascript $("#tree")....

    树控件js特效

    本篇文章将深入探讨如何使用JavaScript和jQuery来实现树形控件的动态效果。 一、JavaScript与jQuery基础知识 1. JavaScript:JavaScript是一种广泛使用的脚本语言,主要负责网页的交互逻辑,可以在浏览器端运行,...

    jquery_ztree_demo.rar_DEMO_ztree

    本篇文章将深入探讨如何使用jQuery zTree实现动态级联二级菜单。 首先,我们需要了解zTree的基本概念。zTree的核心是HTML结构中的`&lt;ul&gt;`和`&lt;li&gt;`元素,通过CSS和JavaScript进行渲染,形成可交互的树形结构。每个`...

    jQuery循环遍历子节点并获取值的方法

    本篇文章将详细讲解如何使用jQuery来循环遍历子节点并获取它们的值,这在处理复杂页面结构时尤其有用。 首先,我们来看一个简单的HTML示例,包含一个`&lt;div&gt;`元素,其中嵌套了多个`&lt;ul&gt;`列表和`&lt;li&gt;`列表项: ```...

Global site tag (gtag.js) - Google Analytics