FancyTree很是優秀的樹控件node
examples:http://wwwendt.de/tech/fancytree/jquery
如何將樹節點的選中狀態保存下來,不管刷新頁面仍是,ajax重複請求,都保持在上一次狀態呢?git
FancyTree提供狀態持久化保存擴展,方案以下:github
https://github.com/mar10/fancytree/wiki/ExtPersistajax
$("#tree").fancytree({ extensions: ["persist"], checkbox: true, persist: { // Available options with their default: cookieDelimiter: "~", // character used to join key strings cookiePrefix: undefined, // 'fancytree-<treeId>-' by default cookie: { // settings passed to jquery.cookie plugin raw: false, expires: "", path: "", domain: "", secure: false }, expandLazy: false, // true: recursively expand and load lazy nodes overrideSource: true, // true: cookie takes precedence over `source` data attributes. store: "auto", // 'cookie': use cookie, 'local': use localStore, 'session': use sessionStore types: "active expanded focus selected" // which status types to store }, [...] });
cookieDelimiter, type: {string}, default: '~'
Character used to join key strings.cookie
cookiePrefix, type: {string}, default: 'fancytree-<treeId>-'
Used to generate storage keys.session
cookie, type: {object}, default: use a session cookie
Options passed to $.cookie
plugin (only if cookies are used; see also 'store' option).dom
expandLazy, type: {boolean}, default: false
true: recursively expand and load lazy nodes.ide
fireActivate, type: {boolean}, default: true
false: suppress activate
event after active node was restored.spa
overrideSource, type: {boolean}, default: true
true: persisted information will be used, even if source data is set to true
or false
.
false: persisted information will only be used if source data is undefined
.
store, type: {string}, default: 'auto'
Storage type 'local': localStorage, 'session': sessionStorage, 'cookie': use js-cookie (or jquery-cookie ) plugin.
'auto': use sessionStorage if available, fallback to cookie.
Use 'local' (or 'cookie' with expiration settings) to store status over sessions.
types, type: {string}, default: 'active expanded focus selected'
Which status types to store, separated by space.
{void} tree.clearCookies(types)
這裏注意:cookiePrefix,若是不設置該值的話,每次ajax請求的tree都是不同(非刷新頁面),沒法達到保持狀態的效果,設置該值後,不管刷新頁面仍是ajax請求,均可以保持狀態了。
參考文獻:http://stackoverflow.com/questions/33147617/fancytree-only-loads-persist-state-after-page-refresh
cookie: { expires:365 }, 能夠設置cookie的有效期,固然還有其餘若干存儲方式可選擇