【www.gdgbn.com--jquery】

;(function($) {

function load(settings, root, child, container) {
 $.getJSON(settings.url, {root: root}, function(response) {
  function createNode(parent) {
   var current = $("

  • ").attr("id", this.id || "").html("" + this.text + "").appendTo(parent);
       if (this.classes) {
        current.children("span").addClass(this.classes);
       }
       if (this.expanded) {
        current.addClass("open");
       }
       if (this.hasChildren || this.children && this.children.length) {
        var branch = $("
      ").appendTo(current);
          if (this.hasChildren) {
           current.addClass("hasChildren");
           createNode.call({
            text:"placeholder",
            id:"placeholder",
            children:[]
           }, branch);
          }
          if (this.children && this.children.length) {
           $.each(this.children, createNode, [branch])
          }
         }
        }
        $.each(response, createNode, [child]);
              $(container).treeview({add: child});
          });
      }

      var proxied = $.fn.treeview;
      $.fn.treeview = function(settings) {
       if (!settings.url) {
        return proxied.apply(this, arguments);
       }
       var container = this;
       load(settings, "source", this, container);
       var userToggle = settings.toggle;
       return proxied.call(this, $.extend({}, settings, {
        collapsed: true,
        toggle: function() {
         var $this = $(this);
         if ($this.hasClass("hasChildren")) {
          var childList = $this.removeClass("hasChildren").find("ul");
          childList.empty();
          load(settings, this.id, childList, container);
         }
         if (userToggle) {
          userToggle.apply(this, arguments);
         }
        }
       }));
      };

      })(jQuery);

      本文来源:http://www.gdgbn.com/wangyezhizuo/19386/