1. 程式人生 > >jsTree非同步動態載入子節點

jsTree非同步動態載入子節點

1.專案環境

想要將顯示區域作為查詢的條件,而區域是樹形結構並且可以多選,並且資料量很大,是從中國到鄉鎮的地區資料,如果我們一次將所有的區域資料查出直接塞到樹形結構,那麼頁面將會卡死,因此我們需要每次載入部分資料,如果展開下級,那麼顯示下一級所有的區域,這樣可以解決資料量大而導致頁面無法快取的問題。

2.匯入樣式表

<link type="text/css" rel="stylesheet" href="../js/jsTree/themes/default/style.min.css">

3.匯入js包

<!-- jquery的js包 -->
<script type="text/javascript" src="../js/jquery.min.js"></script>
<!-- jsTree樹形結構外掛-->
<script type="text/javascript" src="../js/jsTree/jstree.min.js"></script>

4.html

<div id="regionTree" style="margin-left:20px;"></div>

5.區域樹

function initRegionTree(){
	$("#regionTree").jstree({
        'plugins' : ["checkbox"], //出現選擇框
        'checkbox': { cascade: "", three_state: false }, //不級聯
        'core': {
		    "data" : {  
		        "dataType" : 'json', 
		        "opts":{  
	                method: "POST"
		        },
		        "url" : function(node){  
		            return url; 
		        },  
		        "data" : function(node){
		        	if(node.id !="#"){
		        		return {"id" : node.id};
		        	}
		            return {"id" : 0};//寫自己的載入資料
		        }
		    }, 
            "themes": {
            	"theme" : "apple",
            },
            "multiple" : true,//可以多選
        }
    });
    //隱藏圖示
    $("#regionTree").jstree().hide_icons();
    //重新整理區域樹
    $("#regionTree").jstree('refresh');
}

6.頁面接收節點的資料結構

[
{"children":false,"id":"107712","text":"廣東省"},
{"children":false,"id":"175820","text":"海南省"},
{"children":true,"id":"18047","text":"浙江省"},
{"children":true,"id":"2","text":"福建省"},
{"children":true,"id":"237641","text":"河南省"},
{"children":false,"id":"291426","text":"黑龍江省"},
{"children":true,"id":"307715","text":"湖北省"},
{"children":true,"id":"403889","text":"江蘇省"},
{"children":true,"id":"493130","text":"山東省"},
{"children":true,"id":"74873","text":"北京市"},
{"children":true,"id":"81714","text":"安徽省"}
]
分析:

id為標識。

text為顯示的文字資料。

children標誌位如果為true,那麼說明存在子節點,下次點選會自動再次傳送連結載入子節點。標誌位為false,那麼說明當前節點為葉子節點,那麼當前節點不存在子節點了。

7.結果


8.獲取選中物件的ID和值

var selectedRegionArr = $('#regionTree').jstree().get_checked(true);//獲取選中的物件,返回值為陣列
for(var i=0 ; i<selectedRegionArr.length ; i++){
alert(selectedRegionArr[i].text);//列印選中的值
alert(selectedRegionArr[i].id);//列印選中的ID}

9.複選框樹通用模型

/**
 * 通用方法,生成樹模型
 * 引數:
 * elementId :生成樹顯示的控制元件ID
 * url:動態載入子節點的url
 * initialId:初始化節點
 * */
function initJSTree(elementId,url,initialId){
	$("#"+elementId).jstree({
        'plugins' : ["checkbox"], //出現選擇框
        'checkbox': { cascade: "", three_state: false }, //不級聯
        'core': {
		    "data" : {  
		        "dataType" : 'json', 
		        "opts":{  
	                method: "POST"
		        },
		        "url" : function(node){  
		            return url; 
		        },  
		        "data" : function(node){
		        	if(node.id !="#"){
		        		return {"id" : node.id};
		        	}
		            return {"id" : initialId};
		        }
		    }, 
            "themes": {
            	"theme" : "apple",
            },
            "multiple" : true,//可以多選
        }
    });
    //隱藏圖示
    $("#"+elementId).jstree().hide_icons();
    //重新整理區域樹
    $("#"+elementId).jstree('refresh');
}

10.jsTree中文API文件

相關推薦

jsTree非同步動態載入節點

1.專案環境 想要將顯示區域作為查詢的條件,而區域是樹形結構並且可以多選,並且資料量很大,是從中國到鄉鎮的地區資料,如果我們一次將所有的區域資料查出直接塞到樹形結構,那麼頁面將會卡死,因此我們需要每次

zTree動態載入節點

我這個案例裡不是採用zTree預設的async進行非同步載入,而是在onExpand事件裡用ajax請求資料, 然後再動態的新增子節點,程式碼如下: var setting = { data: { keep: { parent

使用dtree生成的樹結構,ajax動態載入節點後,如何繫結右鍵選單續

var l_tree = document.getElementById("l_tree_d"); var tree = new dTree("tree");//建立一個物件.      tree.add(0,-1,'APISite',"javaScript:getMore

ext4下拉樹選項框comboboxtree(支援非同步載入節點

ext版本:4 簡介:支援多選、單選、非同步載入子節點(當然一下子拼接好全部節點的json也是絕對沒問題的),(已測試通過)瀏覽器相容ie8、ie11、谷歌、FF。 轉載請說明出處:http://blog.csdn.net/seedingly/article/detail

python動態載入模組 根據字串繫結子模組 如載入os.path

基本動態載入模組方法 x = __import__("os") x.path # out: <module 'posixpath' from 'xxx'> 動態載入子模組 直接載入用__import("os.path")__是不行的 可行方法:

使用zTree.js動態載入節點小結

樹外掛一般用與多級分類,許可權管理選單,這個Ztree功能還是基本滿足我們的需求 直接上程式碼 @{ ViewBag.Title = "zTree"; } <h2> @ViewBag.Title</h2> <link href="~/zTree_v3

easyUI中tree的預設載入節點

$(document).ready(function() {     $('#comboboxtree').tree({  /* 傳送請求*/         url : 'comboboxtree?',         onLoadSuccess : function(n

jstree checkbox選擇所有節點卻不自動選擇父節點

我用的是  jsTree 3.0.0 jstree加個checkbox外掛就可以實現多選。且預設 選中父節點就選中其所有子節點,選中所有子節點就自動選中這些子節點的父節點。 我現在的需求是,即使選擇了所有子節點也不自動選擇父節點,其他不變。。。。。。。。。。 在谷歌找了很

Henry手記-VB.NET中動態載入Treeview節點(一)

     Henry手記-VB.NET中動態載入Treeview節點(一)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />                  韓

TreeView遞迴生成樹(普通載入和快速載入、最快的是點一級載入節點)

 1、普通遞迴法(速度慢)    在TreeView中新增選中節點的背景樣式<SelectedNodeStyle BackColor="Silver" />      <asp:TreeView ID="TreeView1" runat="server"

jstree 非同步載入json節點資料

$("#jqTree").jstree({ //這個例子只是一部分的功能,還有待優化的地方 "json_data" : { "ajax" : { "type":"get",

osgEarth的Rex引擎原理分析(十四)分頁瓦片載入節點的作用

目標:(十二)中的問題21 在rex引擎的setMap中建立了分頁瓦片載入器子節點 osgEarthDrivers/engine_rex/RexTerrainEngineNode.cpp void RexTerrainEngineNode::setMap(const Map* map, co

element ui 全載入節點內子項的動態更新

為了持之以恆的勳章,不得不在9月的最後幾天,水幾篇原創文章(無奈ing)。本人剛接觸element ui,屬於白痴一個,如果有更好的的方法,歡迎大神留言交流,感激不盡!!! 其實跟《element ui 懶載入樹節點內子項的動態更新》道理大致是一樣的。 我們得到選中的的節點,或者說是待更

element ui 懶載入節點內子項的動態更新

為了保持住持之以恆的勳章,不得不在9月的最後幾天內水幾篇原創文章。本人是剛接觸element ui,屬於大白菜一顆,大神有其他方法的話,歡迎評論留言指導。   <el-tree :props="props1" :load="loadNode1" lazy

JStree 無限節樹結構加節點分頁

$('#tree') .jstree({ "core" : { "check_callback" : true, 'data' : { "url" : function(da

Vue動態載入非同步元件

背景: 目前我們專案都是按元件劃分的,然後各個元件之間封裝成產品。目前都是採用iframe直接巢狀頁面。專案中我們還是會碰到一些通用的元件跟業務之間有通訊,這種情況下iframe並不是最好的選擇,iframe存在跨域的問題,當然是postMessage還是可以通訊的,但也並非是最好的。目前有這麼一個場景:門

Ext.data.TreeStore 分級非同步載入節點示例

Ext.data.TreeStore遠端載入樹節點有兩種常用方式,分別是:分級載入和整體載入。對於結構複雜資料量大的樹結構使用分級載入可以極大提高程式響應速度並提升使用者體驗。客戶端:<%@ page language="java" import="java.util.

easyui treegrid動態載入節點

最近在做一個許可權管理系統,需要有一個選單的管理,選單的資料結構是自關聯無限極的一對多關係。在列表管理頁面決定選擇用easyui的treegrid外掛。考慮到其無限層級關係,若要一次性拿出所有資料那需要在mysql中寫函式跟儲存過程,需要有臨時表的存在,這樣會相對降低效率,

Extjs4.2 TreePanel+Asp.net mvc 動態載入節點

extjs經常使用的部分有介面、資料模型、資料來源、事件。構建TreePanel需要三個,UI、模型、和資料來源。 在extjs中,為了讓資料來源能夠正確載入資料,我們需要定義以個數據模型。 樹節點的模型定義: Ext.define('TreeData', { e

easyUI 下拉框 樹形選單載入父/節點

最近忙著做easyUI搭建的專案,有很多父子關係的表需要互相依賴 在前臺展示為選單樹或者是下拉框,最開始沒有思路的時候就想著百度,然後百度出來兩種,一種是下拉框樹,一種是多級選單樹,前者只有兩層,後者不帶下拉,於是想兩者結合起來做一個Demo,如下: 表結構,只有一張表,