Hi guys

I am using this plugin (http://bassistance.de/jquery-plugins/jquery-
plugin-treeview/) to create a treeview in async mode with Country-
>Regions->Provinces but I need to use the checkbox for each item.

I have added into the code this code:
<input type='checkbox' name='geo[]'> but I suppose that there is
another clear way to do this job.


this is the code:

/*
 * Async Treeview 0.1 - Lazy-loading extension for Treeview
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
 *
 * Copyright (c) 2007 Jörn Zaefferer
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id$
 *
 */

;(function($) {

function load(settings, root, child, container) {
        $.getJSON(settings.url, {root: root}, function(response) {
                function createNode(parent) {
                        var current = $("<li/>").attr("id", this.id || 
"").html("<input
type='checkbox' name='geo[]'> <span>" + this.text + "</span>").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 = $("<ul/>").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);

Reply via email to