亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? treeview-debug.js

?? 目錄樹,在腳本中可以直接調用后臺java代碼,動態加載數據至頁面顯示.
?? JS
?? 第 1 頁 / 共 5 頁
字號:
        if (! this.multiExpand) {            var sibs = this.getSiblings();            for (var i=0; i<sibs.length; ++i) {                if (sibs[i] != this && sibs[i].expanded) {                     sibs[i].collapse();                 }            }        }        this.showChildren();        ret = this.tree.fireEvent("expandComplete", this);    },    updateIcon: function() {        if (this.hasIcon) {            var el = this.getToggleEl();            if (el) {                el.className = this.getStyle();            }        }    },    /**     * Returns the css style name for the toggle     * @method getStyle     * @return {string} the css class for this node's toggle     */    getStyle: function() {        // this.logger.log("No children, " + " isDyanmic: " + this.isDynamic() + " expanded: " + this.expanded);        if (this.isLoading) {            this.logger.log("returning the loading icon");            return "ygtvloading";        } else {            // location top or bottom, middle nodes also get the top style            var loc = (this.nextSibling) ? "t" : "l";            // type p=plus(expand), m=minus(collapase), n=none(no children)            var type = "n";            if (this.hasChildren(true) || (this.isDynamic() && !this.getIconMode())) {            // if (this.hasChildren(true)) {                type = (this.expanded) ? "m" : "p";            }            // this.logger.log("ygtv" + loc + type);            return "ygtv" + loc + type;        }    },    /**     * Returns the hover style for the icon     * @return {string} the css class hover state     * @method getHoverStyle     */    getHoverStyle: function() {         var s = this.getStyle();        if (this.hasChildren(true) && !this.isLoading) {             s += "h";         }        return s;    },    /**     * Recursively expands all of this node's children.     * @method expandAll     */    expandAll: function() {         for (var i=0;i<this.children.length;++i) {            var c = this.children[i];            if (c.isDynamic()) {                alert("Not supported (lazy load + expand all)");                break;            } else if (! c.multiExpand) {                alert("Not supported (no multi-expand + expand all)");                break;            } else {                c.expand();                c.expandAll();            }        }    },    /**     * Recursively collapses all of this node's children.     * @method collapseAll     */    collapseAll: function() {         for (var i=0;i<this.children.length;++i) {            this.children[i].collapse();            this.children[i].collapseAll();        }    },    /**     * Configures this node for dynamically obtaining the child data     * when the node is first expanded.  Calling it without the callback     * will turn off dynamic load for the node.     * @method setDynamicLoad     * @param fmDataLoader {function} the function that will be used to get the data.     * @param iconMode {int} configures the icon that is displayed when a dynamic     * load node is expanded the first time without children.  By default, the      * "collapse" icon will be used.  If set to 1, the leaf node icon will be     * displayed.     */    setDynamicLoad: function(fnDataLoader, iconMode) {         if (fnDataLoader) {            this.dataLoader = fnDataLoader;            this._dynLoad = true;        } else {            this.dataLoader = null;            this._dynLoad = false;        }        if (iconMode) {            this.iconMode = iconMode;        }    },    /**     * Evaluates if this node is the root node of the tree     * @method isRoot     * @return {boolean} true if this is the root node     */    isRoot: function() {         return (this == this.tree.root);    },    /**     * Evaluates if this node's children should be loaded dynamically.  Looks for     * the property both in this instance and the root node.  If the tree is     * defined to load all children dynamically, the data callback function is     * defined in the root node     * @method isDynamic     * @return {boolean} true if this node's children are to be loaded dynamically     */    isDynamic: function() {         var lazy = (!this.isRoot() && (this._dynLoad || this.tree.root._dynLoad));        // this.logger.log("isDynamic: " + lazy);        return lazy;    },    /**     * Returns the current icon mode.  This refers to the way childless dynamic     * load nodes appear.     * @method getIconMode     * @return {int} 0 for collapse style, 1 for leaf node style     */    getIconMode: function() {        return (this.iconMode || this.tree.root.iconMode);    },    /**     * Checks if this node has children.  If this node is lazy-loading and the     * children have not been rendered, we do not know whether or not there     * are actual children.  In most cases, we need to assume that there are     * children (for instance, the toggle needs to show the expandable      * presentation state).  In other times we want to know if there are rendered     * children.  For the latter, "checkForLazyLoad" should be false.     * @method hasChildren     * @param checkForLazyLoad {boolean} should we check for unloaded children?     * @return {boolean} true if this has children or if it might and we are     * checking for this condition.     */    hasChildren: function(checkForLazyLoad) {         return ( this.children.length > 0 ||                 (checkForLazyLoad && this.isDynamic() && !this.dynamicLoadComplete) );    },    /**     * Expands if node is collapsed, collapses otherwise.     * @method toggle     */    toggle: function() {        if (!this.tree.locked && ( this.hasChildren(true) || this.isDynamic()) ) {            if (this.expanded) { this.collapse(); } else { this.expand(); }        }    },    /**     * Returns the markup for this node and its children.     * @method getHtml     * @return {string} the markup for this node and its expanded children.     */    getHtml: function() {        this.childrenRendered = false;        var sb = [];        sb[sb.length] = '<div class="ygtvitem" id="' + this.getElId() + '">';        sb[sb.length] = this.getNodeHtml();        sb[sb.length] = this.getChildrenHtml();        sb[sb.length] = '</div>';        return sb.join("");    },    /**     * Called when first rendering the tree.  We always build the div that will     * contain this nodes children, but we don't render the children themselves     * unless this node is expanded.     * @method getChildrenHtml     * @return {string} the children container div html and any expanded children     * @private     */    getChildrenHtml: function() {        var sb = [];        sb[sb.length] = '<div class="ygtvchildren"';        sb[sb.length] = ' id="' + this.getChildrenElId() + '"';        // This is a workaround for an IE rendering issue, the child div has layout        // in IE, creating extra space if a leaf node is created with the expanded        // property set to true.        if (!this.expanded || !this.hasChildren()) {            sb[sb.length] = ' style="display:none;"';        }        sb[sb.length] = '>';        // Don't render the actual child node HTML unless this node is expanded.        if ( (this.hasChildren(true) && this.expanded) ||                (this.renderHidden && !this.isDynamic()) ) {            sb[sb.length] = this.renderChildren();        }        sb[sb.length] = '</div>';        return sb.join("");    },    /**     * Generates the markup for the child nodes.  This is not done until the node     * is expanded.     * @method renderChildren     * @return {string} the html for this node's children     * @private     */    renderChildren: function() {        this.logger.log("rendering children for " + this.index);        var node = this;        if (this.isDynamic() && !this.dynamicLoadComplete) {            this.isLoading = true;            this.tree.locked = true;            if (this.dataLoader) {                this.logger.log("Using dynamic loader defined for this node");                setTimeout(                     function() {                        node.dataLoader(node,                             function() {                                 node.loadComplete();                             });                    }, 10);                            } else if (this.tree.root.dataLoader) {                this.logger.log("Using the tree-level dynamic loader");                setTimeout(                     function() {                        node.tree.root.dataLoader(node,                             function() {                                 node.loadComplete();                             });                    }, 10);            } else {                this.logger.log("no loader found");                return "Error: data loader not found or not specified.";            }            return "";        } else {            return this.completeRender();        }    },    /**     * Called when we know we have all the child data.     * @method completeRender     * @return {string} children html     */    completeRender: function() {        this.logger.log("completeRender: " + this.index + ", # of children: " + this.children.length);        var sb = [];        for (var i=0; i < this.children.length; ++i) {            // this.children[i].childrenRendered = false;            sb[sb.length] = this.children[i].getHtml();        }                this.childrenRendered = true;        return sb.join("");    },    /**     * Load complete is the callback function we pass to the data provider     * in dynamic load situations.     * @method loadComplete     */    loadComplete: function() {        this.logger.log("loadComplete: " + this.index);        this.getChildrenEl().innerHTML = this.completeRender();        this.dynamicLoadComplete = true;        this.isLoading = false;        this.expand();        this.tree.locked = false;    },    /**     * Returns this node's ancestor at the specified depth.     * @method getAncestor     * @param {int} depth the depth of the ancestor.     * @return {Node} the ancestor     */    getAncestor: function(depth) {        if (depth >= this.depth || depth < 0)  {            this.logger.log("illegal getAncestor depth: " + depth);            return null;        }        var p = this.parent;                while (p.depth > depth) {            p = p.parent;        }        return p;    },    /**     * Returns the css class for the spacer at the specified depth for     * this node.  If this node's ancestor at the specified depth     * has a next sibling the presentation is different than if it     * does not have a next sibling     * @method getDepthStyle     * @param {int} depth the depth of the ancestor.     * @return {string} the css class for the spacer     */    getDepthStyle: function(depth) {        return (this.getAncestor(depth).nextSibling) ?             "ygtvdepthcell" : "ygtvblankdepthcell";    },    /**     * Get the markup for the node.  This is designed to be overrided so that we can     * support different types of nodes.     * @method getNodeHtml     * @return {string} The HTML that will render this node.     */    getNodeHtml: function() {         this.logger.log("Generating html");        return "";     },    /**     * Regenerates the html for this node and its children.  To be used when the     * node is expanded and new children have been added.     * @method refresh     */    refresh: function() {        // this.loadComplete();        this.getChildrenEl().innerHTML = this.completeRender();        if (this.hasIcon) {            var el = this.getToggleEl();            if (el) {                el.className = this.getStyle();            }        }    },    /**     * Node toString     * @method toString     * @return {string} string representation of the node     */    toString: function() {        return "Node (" + this.index + ")";    }};YAHOO.augment(YAHOO.widget.Node, YAHOO.util.EventProvider);/** * The default node presentation.  The first parameter should be * either a string that will be used as the node's label, or an object * that has a string propery called label.  By default, the clicking the * label will toggle the expanded/collapsed state of the node.  By * changing the href property of the instance, this behavior can be * changed so that the label will go to the specified href. * @namespace YAHOO.widget * @class TextNode * @extends YAHOO.widget.Node * @constructor * @param oData {object} a string or object containing the data that will * be used to render this node * @param oParent {YAHOO.widget.Node} this node's parent node * @param expanded {boolean} the initial expanded/collapsed state */YAHOO.widget.TextNode = function(oData, oParent, expanded) {    if (oData) {         this.init(oData, oParent, expanded);        this.setUpLabel(oData);    }    this.logger     = new YAHOO.widget.LogWriter(this.toString());};YAHOO.extend(YAHOO.widget.TextNode, YAHOO.widget.Node, {        /**     * The CSS class for the label href.  Defaults to ygtvlabel, but can be     * overridden to provide a custom presentation for a specific node.     * @property labelStyle     * @type string     */    labelStyle: "ygtvlabel",    /**     * The derived element id of the label for this node     * @property labelElId     * @type string     */    labelElId: null,    /**     * The text for the label.  It is assumed that the oData parameter will     * either be a string that will be used as the label, or an object that     * has a property called "label" that we will use.     * @property label     * @type string     */    label: null,    textNodeParentChange: function() {         /**         * Custom event that is fired when the text node label is clicked.  The

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线三级电影| 久久久欧美精品sm网站| 久久精品一二三| 亚洲最大色网站| 色哟哟精品一区| 26uuu久久天堂性欧美| 亚洲v日本v欧美v久久精品| 从欧美一区二区三区| 日韩精品一区二区三区四区 | 国产精品成人在线观看 | 亚洲国产综合人成综合网站| 国产麻豆精品theporn| 欧美日韩不卡一区| 亚洲美女免费视频| 国产91露脸合集magnet| 欧美第一区第二区| 日韩精品一二三四| 欧美亚洲国产一卡| 亚洲免费成人av| 不卡视频一二三| www成人在线观看| 精品一区二区av| 欧美成人官网二区| 美腿丝袜亚洲一区| 欧美精品久久99| 日日摸夜夜添夜夜添国产精品 | 亚洲精品久久久蜜桃| 播五月开心婷婷综合| 国产校园另类小说区| 国产一区二区影院| 久久影院视频免费| 91国模大尺度私拍在线视频| 中文字幕欧美日韩一区| 国产成人日日夜夜| 久久精品视频网| 成人综合婷婷国产精品久久| 国产欧美一区二区三区在线看蜜臀 | 日本精品一级二级| 伊人婷婷欧美激情| 欧美性大战久久久久久久蜜臀| 一区二区三区四区视频精品免费 | 欧美狂野另类xxxxoooo| 午夜欧美在线一二页| 欧美丰满嫩嫩电影| 麻豆国产精品官网| 久久综合一区二区| 成人精品一区二区三区四区 | 91视频一区二区三区| 一区二区三区在线视频观看58| 欧美在线999| 人人精品人人爱| 欧美成人一区二区三区| 国产精品主播直播| 蜜臀av一区二区在线免费观看| 日韩一区二区电影| 国产东北露脸精品视频| 中文字幕亚洲一区二区va在线| 色婷婷综合久久久中文字幕| 亚洲成在线观看| 精品噜噜噜噜久久久久久久久试看| 国产麻豆视频精品| 亚洲精品国产a| 91精品国产乱码| 成人小视频免费观看| 亚洲第一狼人社区| 久久精品一区蜜桃臀影院| 在线一区二区视频| 激情综合色综合久久综合| 亚洲色欲色欲www在线观看| 欧美乱妇23p| 成人av免费网站| 日本一区中文字幕| 国产精品二区一区二区aⅴ污介绍| 欧美在线观看一区二区| 久久99久国产精品黄毛片色诱| 国产精品网站一区| 91精品视频网| 97久久超碰国产精品| 蜜桃久久精品一区二区| 亚洲乱码中文字幕| 久久久午夜精品| 欧美日韩国产片| 成人av在线网站| 九九国产精品视频| 亚洲线精品一区二区三区 | 欧美一区二区三区视频在线观看| 国产.精品.日韩.另类.中文.在线.播放| 亚洲永久精品国产| 久久午夜电影网| 4438x亚洲最大成人网| 99re热视频这里只精品| 国产乱码一区二区三区| 亚洲成av人在线观看| 国产精品传媒入口麻豆| 亚洲精品成人少妇| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 精品国产a毛片| 欧美日韩国产在线观看| 色先锋资源久久综合| 国产91综合一区在线观看| 欧美aaa在线| 午夜视频在线观看一区二区三区| 亚洲日本在线天堂| 中文字幕精品一区二区精品绿巨人| 欧美一卡二卡在线| 欧美日韩极品在线观看一区| 日本韩国欧美一区二区三区| www.亚洲国产| 成人毛片视频在线观看| 成人涩涩免费视频| 国产iv一区二区三区| 国产精品1024久久| 国内成人免费视频| 九九精品一区二区| 老色鬼精品视频在线观看播放| 视频一区欧美精品| 三级一区在线视频先锋| 丝瓜av网站精品一区二区| 无吗不卡中文字幕| 午夜精品久久一牛影视| 午夜精品成人在线视频| 午夜精品福利一区二区三区av| 亚洲第一精品在线| 日韩二区在线观看| 蜜桃一区二区三区在线观看| 欧美a级一区二区| 韩国av一区二区| 丁香一区二区三区| 99视频精品在线| 欧美性受极品xxxx喷水| 欧美日韩黄色影视| 欧美va亚洲va| 中文字幕国产一区| 亚洲美女在线一区| 天天亚洲美女在线视频| 精品一区二区三区香蕉蜜桃 | 精品国产百合女同互慰| 欧美国产日韩一二三区| 一区二区三区在线视频播放| 亚洲国产一区二区视频| 捆绑紧缚一区二区三区视频| 国产成人av电影免费在线观看| 91麻豆免费在线观看| 欧美妇女性影城| 久久久久久久网| 亚洲人成亚洲人成在线观看图片| 香蕉影视欧美成人| 国产精品一区二区久久不卡| 色嗨嗨av一区二区三区| 日韩一区二区免费高清| 国产精品视频免费| 午夜天堂影视香蕉久久| 国产成人在线视频网站| 欧美亚洲国产一区二区三区va | 九色porny丨国产精品| 国产成人日日夜夜| 4438x亚洲最大成人网| 亚洲国产激情av| 免费看日韩a级影片| 不卡电影一区二区三区| 日韩一区和二区| 亚洲女爱视频在线| 国产一区二区h| 欧美日韩和欧美的一区二区| 国产午夜亚洲精品羞羞网站| 偷拍日韩校园综合在线| 成人av在线资源网站| 精品免费日韩av| 丝袜脚交一区二区| 色播五月激情综合网| 国产偷国产偷亚洲高清人白洁 | 亚洲美女屁股眼交| 国产精品一区二区三区四区| 6080国产精品一区二区| 亚洲你懂的在线视频| 成人一区二区三区中文字幕| 91精品国产91综合久久蜜臀| 一区二区三区日韩精品| 国产超碰在线一区| 精品久久一二三区| 丝袜亚洲精品中文字幕一区| 在线观看欧美日本| 国产精品乱人伦中文| 国产一区二区调教| 日韩午夜精品电影| 首页欧美精品中文字幕| 欧美性一级生活| 一区二区三区四区国产精品| av在线播放成人| 国产精品无码永久免费888| 狠狠色丁香婷综合久久| 欧美一级电影网站| 老司机午夜精品| 欧美zozozo| 精品一区二区成人精品| 日韩一区二区三区免费观看| 热久久一区二区| 日韩一区二区在线观看| 日本不卡一区二区三区高清视频| 欧美美女一区二区三区|